[fpc-devel] LoadLibrary result
I'm using a list of objects that each needs to load a shared Library (written in C). As some operations inside the library are slow, I've created a TThread to do multiple operations simultaneously. As the library is not thread safe, I thought using "loadLibrary" will create a different "instance" after each load, but, as the TLibHandle resulting of that function is the same, I think the library is only loaded once. Is there a way to have different handles for each loadlibrary?. Leonardo M. Ramé http://leonardorame.blogspot.com___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] LoadLibrary result
On 30 May 2013, at 17:27, Leonardo M. Ramé wrote: > I'm using a list of objects that each needs to load a shared Library (written > in C). As some operations inside the library are slow, I've created a TThread > to do multiple operations simultaneously. > > As the library is not thread safe, I thought using "loadLibrary" will create > a different "instance" after each load, but, as the TLibHandle resulting of > that function is the same, I think the library is only loaded once. > > Is there a way to have different handles for each loadlibrary?. No, you can load a library only once per process. Loading it more than once is not supported by any dynamic linker I know of, because it would result in symbol clashes. Jonas___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel
Re: [fpc-devel] LoadLibrary result
> > From: Jonas Maebe >To: Leonardo M. Ramé ; FPC developers' list > >Sent: Thursday, May 30, 2013 12:40 PM >Subject: Re: [fpc-devel] LoadLibrary result > > > >On 30 May 2013, at 17:27, Leonardo M. Ramé wrote: > >> I'm using a list of objects that each needs to load a shared Library >> (written in C). As some operations inside the library are slow, I've created >> a TThread to do multiple operations simultaneously. >> >> As the library is not thread safe, I thought using "loadLibrary" will create >> a different "instance" after each load, but, as the TLibHandle resulting of >> that function is the same, I think the library is only loaded once. >> >> Is there a way to have different handles for each loadlibrary?. > >No, you can load a library only once per process. Loading it more than once is >not supported by any dynamic linker I know of, because it would result in >symbol clashes. > Thanks Jonas, good to know that. I'll have to re-architect the library to avoid using globals... -- Leonardo M. Ramé http://leonardorame.blogspot.com ___ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel