public inbox for pthreads-win32@sourceware.org
 help / color / mirror / Atom feed
* pthread library static linking
@ 2004-04-23  5:45 Meno Abels
  2004-04-23  7:34 ` Ross Johnson
  0 siblings, 1 reply; 2+ messages in thread
From: Meno Abels @ 2004-04-23  5:45 UTC (permalink / raw)
  To: pthreads-win32

hello,

i'am new here so one question is allowed-:)
I want to use pthread-win32 not as a dll. I want
to link the pthread-win32 functionality static
to my application just to make distribution of that
application easier.
So that is quite easy to get, but there are the DllMain.
In DllMain you use the DLL_THREAD_ATTACH/DLL_THREAD_DETACH.
These prevents to use your lib static linked. Not technical
but functional. The DLL_PROCESS_ATTACH/DETACH is simple to
simulate infact I will call it on startup and end of my
application direct. The thread stuff is more complex i have to
change the thread create and thread exit code of your library.
My basic question is why you choose this solution with
DllMain. The pthread library is a wrapper around the
windows functions so it would be obvious to add the needed
initialisation for the create and exit directly.
Why is this done with DllMain?

Thanks in advance

meno

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: pthread library static linking
  2004-04-23  5:45 pthread library static linking Meno Abels
@ 2004-04-23  7:34 ` Ross Johnson
  0 siblings, 0 replies; 2+ messages in thread
From: Ross Johnson @ 2004-04-23  7:34 UTC (permalink / raw)
  To: Meno Abels; +Cc: pthreads-win32

One reason, and possibly the only reason, is that pthreads-win32 allows 
Win32 threads (those not started via pthread_create) to call pthreads 
routines. But to do this usually generates an on-the-fly pthread handle 
for the Win32 thread so that it can be managed. Effectively, any Win32 
thread that calls a pthreads routine becomes a POSIX (DETACHED) thread 
from the library's point of view. The hooks in dllMain enable cleanup of 
these 'implicit' pthread handles because the library has no other way of 
knowing when they exit.

The routines that dllMain calls were split out and are exported so that 
they could be called in statically linked applications. See dllMain.c 
and README.NONPORTABLE.

Now, I could be wrong, but if Win32 threads never call pthreads routines 
then your statically linked application may not need to explicitly call 
these dllMain hooks. Threads created via pthread_create should be 
getting cleaned up at the end of ptw32_threadStart(). You could try it, 
but check for memory leaks.

Ross

Meno Abels wrote:

> hello,
>
> i'am new here so one question is allowed-:)
> I want to use pthread-win32 not as a dll. I want
> to link the pthread-win32 functionality static
> to my application just to make distribution of that
> application easier.
> So that is quite easy to get, but there are the DllMain.
> In DllMain you use the DLL_THREAD_ATTACH/DLL_THREAD_DETACH.
> These prevents to use your lib static linked. Not technical
> but functional. The DLL_PROCESS_ATTACH/DETACH is simple to
> simulate infact I will call it on startup and end of my
> application direct. The thread stuff is more complex i have to
> change the thread create and thread exit code of your library.
> My basic question is why you choose this solution with
> DllMain. The pthread library is a wrapper around the
> windows functions so it would be obvious to add the needed
> initialisation for the create and exit directly.
> Why is this done with DllMain?
>
> Thanks in advance
>
> meno
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-04-23  7:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-04-23  5:45 pthread library static linking Meno Abels
2004-04-23  7:34 ` Ross Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).