This is the mail archive of the guile@cygnus.com mailing list for the guile project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi,
Guiles documentation says about mutex:
- primitive: unlock-mutex MUTEX
Unlocks MUTEX if the calling thread owns the lock on MUTEX.
Calling unlock-mutex on a mutex not owned by the current thread
results in undefined behaviour. Once a mutex has been unlocked,
one thread blocked on MUTEX is awakened and grabs the mutex lock.
When I understand this right, it means, that I can not use a mutex for
flow control between two threads.
I have two threads A and B and a queue, which can be written to by
thread A (and also by some other threads) and read from by thread
B. Thread B should block, when the queue is empty. When I want to use
a emtpy-mutex, it must be locked by the init thread, which creates the
mutex, because in the beginning the queue is empty. By reading the
queue thread B blocks. But it is not possible to unlock the
empty-mutex, because it is likely that the thread writing to the queue
is not the thread, who created the mutex.
How can I get such a "select" functionality for Guile threads?
--
http://www.ping.de/sites/aibon/