|Bill Allombert on Thu, 18 Aug 2005 17:06:41 +0200|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
|Re: PARI and POSIX threads|
On Mon, Aug 15, 2005 at 11:24:58PM +0200, Philippe Elbaz-Vincent wrote: > Hi, > > Is there a way to use PARI (i.e., in lib mode) inside a program > which uses posix threads (under Linux/2.6 with glibc 2.2.5 on x86_64) ? > (and of course knowing that there will be calls to PARI functions inside > threads). > As I understand the troubles come from the garbage collector as the > variables of > the PARI stack are globals and as soon that 2 threads run concurently the > PARI stack would be likely messed up [in fact I tested it and indeed it is > the case]. > > Is there a solution to this problem ? > [is it technically doable to run several instances of PARI inside the same > program ?] I am not sure the answer is known. What you can try is to mark avma, bot and top 'thread-local' using the '__thread' keyword (assuming this is supported) and use allocatemoremem() or switch_stack() to allocate a separate stack in each threads. To copy objects between threads, clone them. We would be very interested to know if that can be made to work. Cheers, Bill.