[vlc-devel] X264 and multithreading on win32

Rémi Denis-Courmont rdenis at simphalempin.com
Tue Feb 5 20:03:09 CET 2008

Le Tuesday 05 February 2008 20:47:38 Benjamin Pracht, vous avez écrit :
> When pthreads-win32 is linked statically with an application, this
> application has to call both pthread_win32_process_attach_np and
> pthread_win32_process_attach_np before doing any pthread call. This
> initializes some static data in the library (beurk).

I cannot see how pthread-win32 could possibly operate otherwise.
POSIX threads include nifty features such as statically initialized mutexes 
and condition variables, and thread-safe run-once code.

To support these on top of the Win32 API which does AFAIK NOT provide static 
mutexes creation, the only way is to have some static data inside the wrapper 
library itself.

I would assume that, when it is linked dynamically, pthread-win32 leverages 
the DLL entry points to take care of such initialization automagically. 
Obviously, this cannot work when linking statically. Of course, it could do 
some reference counting and lazy initialization, but that would not be 
thread-safe. That would not be very sane for a *threading* library.

> Does anybody have an idea of how/where to call this initialization
> functions properly?

Link dynamically, or do the reference counting inside the x264 Open and Close 
callbacks with a global LibVLC mutex, much like the gnutls plugin initializes 
gcrypt (the underlying libgcrypt, rather than the actually used libgnutls).

Rémi Denis-Courmont
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20080205/60985982/attachment.sig>
-------------- next part --------------
vlc-devel mailing list
To unsubscribe or modify your subscription options:

More information about the vlc-devel mailing list