From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Launching background job from Ada.Real_Time.Timing_Events
Date: Wed, 25 May 2016 09:23:07 +0200
Date: 2016-05-25T09:23:07+02:00 [thread overview]
Message-ID: <ni3jto$7bg$1@gioia.aioe.org> (raw)
In-Reply-To: ni1nsh$46j$1@dont-email.me
On 24/05/2016 16:22, Alejandro R. Mosteo wrote:
> I'm stuck with something not that strange, so I guess I need another
> viewpoint on it.
>
> I want to trigger, in the future, a possibly long computation in the
> background. For that I had thought of using the built-in Real_Time events.
>
> My idea was to queue the job when the event is triggered, and to have a
> worker thread waiting for jobs in the queue. However, I've just realized
> that the event handler is itself a protected action, so I can't call
> another potentially blocking enqueue from there.
Neither is protected action. To enqueue anything into FIFO you need no
locking. This is lock-free. To dequeue, provided single consumer there
is no need to lock anything either. If there are several consumers, you
use a protected object to dequeue only.
1-to-n: The dequeue is a waitable entry. Once you have got the packet
out of the queue you process it outside any protected actions.
1-to-1: You use a reset-event implemented using protected object to wake
up the consumer, which dequeues the packet. Reset event is
race-condition free to query if the queue is empty and if so, to wait
for the event.
> Any ideas? Basically, how to trigger another task (without creating it)
> from within a protected handler?
Always by waiting for an entry. E.g. as described above.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2016-05-25 7:23 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-24 14:22 Launching background job from Ada.Real_Time.Timing_Events Alejandro R. Mosteo
2016-05-24 14:39 ` Mark Lorenzen
2016-05-24 15:06 ` Alejandro R. Mosteo
2016-05-24 22:21 ` Jeffrey R. Carter
2016-06-02 21:13 ` Alejandro R. Mosteo
2016-06-02 23:16 ` Jeffrey R. Carter
2016-05-24 23:52 ` Jeffrey R. Carter
2016-06-02 21:22 ` Alejandro R. Mosteo
2016-05-25 7:23 ` Dmitry A. Kazakov [this message]
2016-06-02 21:25 ` Alejandro R. Mosteo
2016-06-03 7:26 ` Dmitry A. Kazakov
2016-06-03 10:03 ` Alejandro R. Mosteo
2016-06-03 12:15 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox