[Vm-dev] Events handling for SqueakGtk

Gwenael Casaccio mrgwen at gmail.com
Fri Jul 11 11:48:24 UTC 2008


On 11 Jul 2008, at 13:30, Bert Freudenberg wrote:

>
> Am 11.07.2008 um 13:26 schrieb Gwenael Casaccio:
>
>> Hello,
>>
>> I am the student who is working for the SqueakGtk plugin and I have  
>> a small problem.
>> For the events handling there is an *active waiting system* like  
>> this :
>>
>>
>> mainLoopProcess := [
>> 		[
>> 			[self doMainIteration.
>> 			self doSignalProcessing] forkAt: Processor  
>> userBackgroundPriority + 1
>> 		] repeat
>> 	] forkAt: Processor userBackgroundPriority
>>
>>
>> It consumes a lot of cpu time.
>> the problem is the method  doMainIteration which call a C method to  
>> get an hypothetic event,
>> I would like to replace this C method by an other method but this  
>> new method will block the interpreter
>> until there is an event.
>>
>> To solve this problem I'll create a C thread and say to the vm  
>> change the status of the current process
>> call the blocking method and when there is an event wake up the  
>> process to say I've finished my work.
>>
>> Is there a way to solve this problem ?
>
>
> The canonical way to do this is have the Smalltalk process wait on a  
> Semaphore, and signal that Semaphore from the VM if there is  
> anything to do. See senders of "Smalltalk registerExternalObject:  
> someSemaphore" for examples.
>
> - Bert -
>
>

Thanks for you answer !

Gwenael


More information about the Vm-dev mailing list