[Lazarus] How to PostMessage to object?

Henry Vermaak henry.vermaak at gmail.com
Thu Jun 9 10:58:35 CEST 2011


On 09/06/11 09:50, Michael Schnell wrote:
> On 06/08/2011 05:39 PM, Henry Vermaak wrote:
>>> There is no chance for deadlock with main thread calling this from
>>> inside another thread?
>>
>>
>> You have to protect it with a critical section (if you have more than
>> one thread calling QueueAsyncCall).
>
> A critical section likely will kill the thread latency, so this should
> be avoided

You will corrupt the linked list that QueueAsyncCall uses when you call 
it from multiple threads, so you _must_ protect it.

> You can fire the same main thread event from many threads. the LCL will
> queue them and the main thread will handle them one after the other.

It doesn't matter if it's the same event or not, all events are stored 
in a list by QueueAsyncCall.  I don't know why they didn't use a 
thread-safe queue for this.

Henry




More information about the Lazarus mailing list