```{index} single: Coro::Signal ``` # Coro::Signal thread signals (binary semaphores) ## SYNOPSIS ```perl use Coro; my $sig = new Coro::Signal; $sig->wait; # wait for signal ## ... some other "thread" $sig->send; ``` ## DESCRIPTION This module implements signals/binary semaphores/condition variables (basically all the same thing). You can wait for a signal to occur or send it, in which case it will wake up one waiter, or it can be broadcast, waking up all waiters. It is recommended not to mix `send` and `broadcast` calls on the same `Coro::Signal` without some deep thinking: while it should work as documented, it can easily confuse you :-> You don't have to load `Coro::Signal` manually, it will be loaded automatically when you `use Coro` and call the `new` constructor. - $sig = new Coro::Signal; Create a new signal. - $sig->wait Wait for the signal to occur (via either `send` or `broadcast`). Returns immediately if the signal has been sent before. - $sig->wait ($callback) If you pass a callback argument to `wait`, it will not wait, but immediately return. The callback will be called under the same conditions as `wait` without arguments would continue the thrad. The callback might wake up any number of threads, but is _NOT_ allowed to block (switch to other threads). - $sig->send Send the signal, waking up _one_ waiting process or remember the signal if no process is waiting. - $sig->broadcast Send the signal, waking up _all_ waiting process. If no process is waiting the signal is lost. - $sig->awaited Return true when the signal is being awaited by some process. ## AUTHOR/SUPPORT/CONTACT ```perl Marc A. Lehmann http://software.schmorp.de/pkg/Coro.html ```