Thread Completion Notifications

DllMain thread start/end notifications without a DLL

DLL_PROCESS_ATTACH

DLL_PROCESS_DETACH

DLL_THREAD_ATTACH

DLL_THREAD_DETACH

pthread_key_create - destructor

typedef DWORD rl_tss_slot_t;

static void (*rl_tss_dtor)();

static __declspec(thread) int volatile tls_initializer;

void __stdcall on_tls_callback(void* hinst, unsigned long reason, void* unused)

{

(void)hinst;

(void)unused;

if (reason == 3 && rl_tss_dtor)

rl_tss_dtor();

}

#pragma data_seg(push, old_seg)

#ifdef RL_M32

# pragma data_seg(".CRT$XLB")

#else

# pragma const_seg(".CRT$XLB")

#endif

__declspec(dllexport) void (__stdcall * volatile p_on_tls_callback)(void*, unsigned long, void*) = on_tls_callback;

#pragma data_seg(pop, old_seg)

http://svn.boost.org/svn/boost/trunk/libs/thread/src/win32/tss_pe.cpp