[Vm-dev] VM Semaphores and external native threads
dionisiydk at gmail.com
Thu Nov 9 09:13:59 UTC 2017
I am wondering, external semaphores are used in sockets. I suppose that it
must be thread safe for that case.
2017-11-09 4:01 GMT+01:00 John McIntosh <johnmci at smalltalkconsulting.com>:
> In the past the semaphore signaling logic was written to be mostly thread
> safe because I was driving it from a UI thread and we had to queue requests
> as the VM only processed the queue every N ms. Don’t know where it sits
> today as it was rewritten.
> Sent from my iPhone
> > On Nov 8, 2017, at 18:32, David T. Lewis <lewis at mail.msen.com> wrote:
> >> On Wed, Nov 08, 2017 at 10:56:50PM -0300, Ronie Salgado wrote:
> >> Hi,
> >> I started to make an IDE like tool in Pharo, and I have an external
> >> for handling some asynchronous events generated in a separate thread,
> >> I am putting in a queue that I am polling each 200 ms from a Pharo
> >> Currently I am using this library for handling pipes of external process
> >> (GDB with the machine interface), and next I am going to add support for
> >> inotify.
> >> I know that I can remove this polling each 200 ms by implementing a
> >> mechanism for registering multiples event handlers that are called by
> >> ioProcessEvents. The SDL2DisplayPlugin registers an event handler in
> >> places, which asks SDL2 for the presence of events and it signals VM
> >> Semaphore. However, since in this case I have control of the code in the
> >> external thread, I would like to just signal the VM Semaphore in this
> >> external thread to avoid this polling. So here is my question:
> >> Is signaling a VM Semaphore thread safe? In case it is not, how much
> >> would require to make it thread safe.
> >> Best regards,
> >> Ronie
> > Do you mean #signalSemaphoreWithWindex: which signals a Smalltalk
> > from the VM or plugin? My expectation is that this is intended to be
> > from the main interpreter thread, and would not be thread safe with
> > to calling it from other threads running in the VM. I expect that you
> > need to synchronize access to signalSemaphoreWithIndex: in order to make
> > work.
> > Dave
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev