The root of the problem is that I wanted 2 worker threads to communicate asynchronously via "one-way" signals and expected this:

Time     Action
--------    -----------------------------------
1          Thread 1: raises signal

2          Thread 1: set up and wait for reply signal with a timeout
            Thread 2: catches signal

3          Thread 2: composes and raises reply signal

4          Thread 1: catches reply

But what happens is that Thread 2 replies before Thread 1 can set up the wait for the reply, so it times out, even though the reply was actually sent.



What is the best way to fix this problem?


On Fri, May 22, 2015 at 12:42 AM, Gavin Lambert <gavinl@compacsort.com> wrote:
On 22/05/2015 08:18, Victor Yankee wrote:
I have a thread with a class and its method that raises a "question"
signal and needs to wait with a timeout for an "answer" signal.

There are several worker threads, some of which may be connected to the
question signal. The answer signal will be raised by a worker thread
only if it knows the answer; it is possible that no worker thread knows
the answer so no answer signal will be raised  (hence need for timeout).
The question thread cannot know which worker thread to ask.

The first thing you need to work out is what happens if more than one worker thread knows the answer.  Or whether this is not possible for other reasons.


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users