コード例 #1
0
ファイル: basesession.cpp プロジェクト: khvysofq/vscp
  void BaseSession::HandleClose(){
    LOG(WARNING) << "realy to close session... ...";
    if (packet_transmitter_)
      packet_transmitter_->SetClose();
    boost::mutex::scoped_lock close_mutex(close_socket_mutex_);
    if (state_ != STATE_ENABLE){
      return;
    }
    if (socket_.is_open()){
      socket_.close();
    }

    state_ = STATE_DISABLE;
  }
コード例 #2
0
ファイル: mutex.cpp プロジェクト: Shajan/CS
static void test() {
  pid_t childpid;
  mutex mparent = create_mutex(MUTEX_NAME, true);

  if ((childpid = fork()) == -1) {
    sys_error_exit("fork");
  }

  if (childpid == 0) {
    /* Child process */
    mutex m = open_mutex(MUTEX_NAME);
    log("Child try lock mutex");
    if (trylock_mutex(m))  // Should not succeed
      error_exit("Child trylock_mutex: mutex not locked by parent");
    log("Child try to lock, 1 second timeout");
    if (lock_withtimeout_mutex(m, 1))
      error_exit("Child lock_withtimeout_mutex: mutex not locked by parent");
    log("Child try to lock, 4 second timeout");
    if (!lock_withtimeout_mutex(m, 4))
      error_exit("Child lock_withtimeout_mutex: mutex locked by parent");
    log("Child release lock");
    unlock_mutex(m);
    close_mutex(m);
    exit(0);
  } else {
    /* Parent process */
    log("Parent sleep 2 second with lock");
    sleep(2);
    log("Parent unlock");
    unlock_mutex(mparent);
    log("Parent sleep 2 seconds without lock");
    sleep(2);
    log("Parent wait for lock");
    lock_mutex(mparent);
    log("Parent got lock");
    destroy_mutex(MUTEX_NAME, mparent);
  }
}
コード例 #3
0
ファイル: bmalloc.c プロジェクト: ahamid/sartoris
void close_malloc_mutex()
{
#	ifdef SAFE
	close_mutex(&malloc_mutex);
#	endif
}