Exemplo n.º 1
0
bool gcore::Thread::detach() {
  if (detachable()) {
    CloseHandle((HANDLE)mSelf);
    mRunning = false;
    mSelf = 0;
    mSelfId = 0;
    return true;
  }
  return false;
}
Exemplo n.º 2
0
bool gcore::Thread::detach() {
  if (detachable()) {
    bool detached = (pthread_detach((pthread_t)mSelf) == 0);
    if (detached) {
      mRunning = false;
      mSelf = 0;
      return true;
    }
  }
  return false;
}
Exemplo n.º 3
0
void test_detach() {
    {
        boost::fibers::fiber f( boost::fibers::launch::post, (detachable()) );
        BOOST_CHECK( f.joinable() );
        f.detach();
        BOOST_CHECK( ! f.joinable() );
        boost::this_fiber::sleep_for( std::chrono::milliseconds(250) );
        BOOST_CHECK( detachable::was_running);
        BOOST_CHECK_EQUAL( 0, detachable::alive_count);
    }
    {
        boost::fibers::fiber f( boost::fibers::launch::post, (detachable()) );
        BOOST_CHECK( f.joinable() );
        boost::this_fiber::yield();
        f.detach();
        BOOST_CHECK( ! f.joinable() );
        boost::this_fiber::sleep_for( std::chrono::milliseconds(250) );
        BOOST_CHECK( detachable::was_running);
        BOOST_CHECK_EQUAL( 0, detachable::alive_count);
    }
}
Exemplo n.º 4
0
gcore::Thread::~Thread() {
  if (detachable()) {
    detach();
  }
}