[fpc-devel] Off-topic: Threadvar in C
    Michael Schnell 
    mschnell at lumino.de
       
    Fri Aug  1 14:14:54 CEST 2008
    
    
  
Sorry to bother you by asking this here, but I don't know a better place. :(
I need to port a multi-threaded program in ANSI C. From a propriety OS 
to Linux.
Here the same code is started in multiple threads.
The OS provides a global variable that is preloaded with a "thread 
number" of the running thread  (1, 2, 3, 4, .... n). This is something 
like a threadvar and can e.g. be used to create an array of records that 
holds thread specific values.
Now in Linux I  need to use the pthread library. Here I don't find 
informations on how to hold thread specific values. Of course I could 
request the thread id and search a dedicated list of the created threads 
every time I need to access these values, but this would provide a 
_huge_ overhead. I can't believe that this is the way to go. And using a 
normal stack-variable is not practical at all as it would be necessary 
to pass it don the complete function hierarchy. A simple global integer 
preloaded with a predefinable number when the OS schedules a thread 
would be enough.
I suppose in Linux, FP uses the pthread library to create the TThread 
functionality.  As the language provides the "threadvar" keyword, there 
needs to be a decent implementation of this functionality. I hope one of 
the compiler developers knows how this is done and/or where I can find 
this in the source code of the compiler and/or the rtl.
Thanks a lot !
-Michael
    
    
More information about the fpc-devel
mailing list