<div dir="ltr">I am wondering, external semaphores are used in sockets. I suppose that it must be thread safe for that case.</div><div class="gmail_extra"><br><div class="gmail_quote">2017-11-09 4:01 GMT+01:00 John McIntosh <span dir="ltr"><<a href="mailto:johnmci@smalltalkconsulting.com" target="_blank">johnmci@smalltalkconsulting.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
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.<br>
<br>
Sent from my iPhone<br>
<div class="HOEnZb"><div class="h5"><br>
> On Nov 8, 2017, at 18:32, David T. Lewis <<a href="mailto:lewis@mail.msen.com">lewis@mail.msen.com</a>> wrote:<br>
><br>
><br>
>> On Wed, Nov 08, 2017 at 10:56:50PM -0300, Ronie Salgado wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> I started to make an IDE like tool in Pharo, and I have an external library<br>
>> for handling some asynchronous events generated in a separate thread, which<br>
>> I am putting in a queue that I am polling each 200 ms from a Pharo image.<br>
>> Currently I am using this library for handling pipes of external process<br>
>> (GDB with the machine interface), and next I am going to add support for<br>
>> inotify.<br>
>><br>
>> I know that I can remove this polling each 200 ms by implementing a<br>
>> mechanism for registering multiples event handlers that are called by<br>
>> ioProcessEvents. The SDL2DisplayPlugin registers an event handler in this<br>
>> places, which asks SDL2 for the presence of events and it signals VM<br>
>> Semaphore. However, since in this case I have control of the code in the<br>
>> external thread, I would like to just signal the VM Semaphore in this<br>
>> external thread to avoid this polling. So here is my question:<br>
>><br>
>> Is signaling a VM Semaphore thread safe? In case it is not, how much work<br>
>> would require to make it thread safe.<br>
>><br>
>> Best regards,<br>
>> Ronie<br>
><br>
> Do you mean #signalSemaphoreWithWindex: which signals a Smalltalk semaphore<br>
> from the VM or plugin? My expectation is that this is intended to be called<br>
> from the main interpreter thread, and would not be thread safe with respect<br>
> to calling it from other threads running in the VM. I expect that you would<br>
> need to synchronize access to signalSemaphoreWithIndex: in order to make this<br>
> work.<br>
><br>
> Dave<br>
><br>
</div></div></blockquote></div><br></div>