http://bugs.winehq.org/show_bug.cgi?id=34865
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello folks,
I should really re-read before hitting submit :| It's two years between mailing list post and Andrey's comment.
The code underwent several changes/refactorings though there is still a usage of QueueUserAPC() API in current cygwin CVS source:
--- snip --- class cygthread { ...
cygthread (LPVOID_THREAD_START_ROUTINE start, LPVOID param, const char *name) : __name (name), func ((LPTHREAD_START_ROUTINE) start), arglen (0), arg (param), notify_detached (NULL) { QueueUserAPC (async_create, GetCurrentThread (), (ULONG_PTR) this); }
... /* This function is called via QueueUserAPC. Apparently creating threads asynchronously is a huge performance win on Win64. */ void CALLBACK cygthread::async_create (ULONG_PTR arg) { cygthread *that = (cygthread *) arg; that->create (); ::SetThreadPriority (that->h, THREAD_PRIORITY_HIGHEST); that->zap_h (); } --- snip ---
Regards