|
Boost Users : |
Subject: Re: [Boost-users] [Thread] finding a good expression to wait...
From: Julien Claassen (julien_at_[hidden])
Date: 2009-09-08 05:07:44
Hello!
In Sep 7 A.D. 2009 Steven Watanabe scripsit:
> AMDG
>
> Julien Claassen wrote
[...]
>> I have seen examples of the producer/consumer pattern, which worked with
>> buffers and they used conditions like:
>> while (buffer_full == 0)
>> or similar. I only have one key, no queueing, so what should I do here?
>
> You effectively need a blocking queue that holds at most one element.
>
> #include <boost/thread/thread.hpp>
> #include <boost/thread/condition.hpp>
> #include <boost/thread/mutex.hpp>
> #include <boost/lambda/lambda.hpp>
> #include <iostream>
>
> using boost::lambda::var;
>
> boost::condition in, out;
> boost::mutex m;
> char input_key;
> int size;
>
> void reader() {
> boost::unique_lock<boost::mutex> l(m);
> while(input_key != 'q') {
> in.wait(l, var(size) < 1);
> std::cin >> input_key;
> size = 1;
> out.notify_one();
> }
> }
Thank you, Steven, for your solution. But now I have a problem. I used
boost::lambda::var both in my read and control/output function, both still
member functions of their respective classes. So the boost::lambda::var in the
controller/output thread has a real int, while the boost::lambda::var in the
input function has a reference to that same int. Not sure if this is the
problem.
Now working with the Boost library collect 1.4.0 and
g++ (Debian 4.3.2-1.1) 4.3.2
Compilation for a small example program takes very long (over 10-15
seconds!) and then produces a very long error. The gist of it, as I understand
is: depth for template nesting is exceeded. There should be a depth > 500
somewhere and it is all about Boost.Lambda.
Would someone have an idea on that? May it have to do with the
class-structure and the reference passed to the boost::lambda::var?
Kindest regards
Julien
--------
Music was my first love and it will be my last (John Miles)
======== FIND MY WEB-PROJECT AT: ========
http://ltsb.sourceforge.net
the Linux TextBased Studio guide
======= AND MY PERSONAL PAGES AT: =======
http://www.juliencoder.de
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net