inline bool winapi_wrapper_try_wait_for_single_object(void *handle)
{
   return winapi_wrapper_timed_wait_for_single_object(handle, boost::posix_time::min_date_time);
}
 bool timed_wait(const boost::posix_time::ptime &abs_time)
 {  return winapi_wrapper_timed_wait_for_single_object(m_sem_hnd, abs_time);  }
inline void winapi_wrapper_wait_for_single_object(void *handle)
{
   winapi_wrapper_timed_wait_for_single_object(handle, boost::posix_time::pos_infin);
}