On Mon, 17 Nov 2003, Johannes Berg wrote:

> Hi,
>
> Attached is a new version, this time with the diff of classesh.inc
>
> This one contains the following new features:
>  * calling suspend from within threads is possible
>    and properly supported
>  * exceptions now work (I accidentally forgot AcquireExceptionObject)
>  * a thread trying to free itself yields an exception
>    (if it propagates up completely the FreeOnTerminate flag is set and
>    the thread destroyed none-the-less)
>  * factored out code for synchronization because I want to use
>    semaphores as they don't fill up the file descriptor table, not used
>    yet because they are not available in classes.pp (yet?), so still
>    uses a pipe
>  * moved FThreadID to protected visibility in case someone needs to use
>    the base pthread_* functions on the thread
>  - the pipe thing is most likely not signal safe (recv can be
>    interrupted). I'm pretty sure actually, but need to test that and
>    add loops as appropriate.
>  - still no synchronization support. I don't think this is too hard, but
>    need information on how the foreground thread should be notified. A
>    pipe would work well, the foreground thread could select() it and see
>    if any thread wants it to do work for it (I expect that the GUI app
>    main loop already selects anyway)

Delphi needs you to explicitly insert calls to CheckSynchronize. This is
handled in the main loop of Delphi applications, and if you don't use
that (e.g. no forms), then no synchronization is performed. I discovered
that the hard way.

I'll look into implementing it.

Michael.

_______________________________________________
fpc-devel maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to