If I want to poll a variable set by an asynchronous unix-style signal, i.e. that doesn't have an OS-level handle and where the latency should probably be of the order of 100mSec, what's the most effective technique?
Mailing lists / lazarus / 2013-02
Signal handling
5 messages · 3 people ·
- HHenry Vermaak 2
- MMark Morgan Lloyd 2
- AAnton Kavalenka 1
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Mark Morgan Lloyd wroteIf I want to poll a variable set by an asynchronous unix-style signal, i.e. that doesn't have an OS-level handle and where the latency should probably be of the order of 100mSec, what's the most effective technique?
Thread1
fEvent.WaitFor(INFINITE); // hang on signal handleThread2
fEvent.SetEvent; // this releases thread1 form waitingregards
Anton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20130220/efd01117/attachment.html>
If I want to poll a variable set by an asynchronous unix-style signal, i.e. that doesn't…
On Feb 20, 2013 8:36 AM, "Mark Morgan Lloyd" <
wrote: If I want to poll a variable set by an asynchronous unix-style signal,
i.e. that doesn't have an OS-level handle and where the latency should probably be of the order of 100mSec, what's the most effective technique?
If I understand correctly, the self pipe trick is probably best, then you don't have to poll, just add the handle to select().
Henry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20130220/1cfff48b/attachment-0001.html>
If I want to poll a variable set by an asynchronous unix-style signal, i.e. that doesn't…
Mark Morgan Lloyd wrote 6 lines
But there's no handle, simply a (global) variable. This continues from an earlier discussion where Sven was cautioning that about the only thing you could do safely in a signal handler was set a (global) variable: that bit I knew, but I don't know how best to deal with the variable once set if there's no convenient timer etc. (I should have threaded the question onto that, but I thought it was on a different list).
On Feb 20, 2013 9:16 AM, "Mark Morgan Lloyd" <
Show quoted text 5 lines
i.e. that doesn't have an OS-level handle and where the latency should probably be of the order of 100mSec, what's the most effective technique?
Show quoted text 6 lines
earlier discussion where Sven was cautioning that about the only thing you could do safely in a signal handler was set a (global) variable: that bit I knew, but I don't know how best to deal with the variable once set if there's no convenient timer etc. (I should have threaded the question onto that, but I thought it was on a different list).
You create the pipe, add the read end fd to select, write a byte to the write end fd in the signal handler. There are a bunch of examples floating around on the web.
Henry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20130220/a41c6188/attachment.html>
