> Looking at my code, I might have initialized my semaphore incorrectly.
> 
> The Windows portion works, and I tried to port it to Linux as follows...
> 
> procedure TtiPool.CreatePoolSemaphore;
> begin
>   {$IFDEF MSWINDOWS}
>   if FSemaphore <> 0 then
>     CloseHandle( FSemaphore ) ;
>   FSemaphore := CreateSemaphore( nil, FiMaxPoolSize, FiMaxPoolSize, nil );
>   {$ENDIF MSWINDOWS}
>   {$IFDEF LINUX}
>   sem_destroy( FSemaphore );
> 
>   if sem_init(FSemaphore, 0, 1) <> 0 then
>     raise Exception.Create('Failed to create the semaphore');
>   {$ENDIF LINUX}
> end;

Looking at unit syncobjs might save you some ifdefs and trouble.

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to