void destroy() { #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable:4312) #endif void* const old_event=BOOST_INTERLOCKED_EXCHANGE_POINTER(&event,0); #ifdef BOOST_MSVC #pragma warning(pop) #endif if(old_event) { win32::CloseHandle(old_event); } }
inline void interlocked_write_release(void* volatile* x,void* value) { BOOST_INTERLOCKED_EXCHANGE_POINTER(x,value); }