The FPC thread setup code (CAllocateThreadVars, InitThread) happens inside the newly created thread before the user's thread function starts.

The only viable way I see to get support from the C library is for it to inform FPC about a new thread after creation, but this means that the C user's thread function has already started executing when FPC gets the new ID. Is it possible to do the FPC thread setup from outside the new thread? Suppose this setup can be completed before the library starts calling FPC callbacks, would all the current memory problems then be solved?

Jonas Maebe wrote:

On 02 Aug 2009, at 20:02, Wimpie Nortje wrote:

Thanks for the response.

The library uses a centralised function to start all its threads using pthread_create. If I can make this central function inform FPC about all the threads created, would this work?

There is no interface in the RTL to inform it about newly created external threads, so it would be quite hard.

Assuming it would work: what information would FPC require? When would this info be required, before or after thread creation? What needs to be done on the FPC side with this info?


Look at rtl/unix/cthreads.pp, in the functions CBeginThread/ThreadMain and CEndThread (they also call generic code from rtl/inc/thread.inc, such as InitThread and DoneThread).


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


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

Reply via email to