Boost logo

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