ブースト スレッド、ミューテックス、および条件変数を使用するコードをいくつか見つけましたが、このコードを posix スレッドで書き直してみたいと思います。
これはBoostコードです。私はここで見つけました:
void push(Data const& data)
{
boost::mutex::scoped_lock lock(the_mutex);
the_queue.push(data);
lock.unlock();
the_condition_variable.notify_one();
}
pthreads を使用する私のコードでは、条件変数を正しい方法で使用しているかどうかわかりません。
void push(T const& data)
{
pthread_mutex_lock(&m_mutex);
m_queue.push(data);
pthread_mutex_unlock(&m_mutex);
pthread_cond_signal(&m_condition);
}
初期化はその直前に行われます:
pthread_mutex_t m_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t m_condition = PTHREAD_COND_INITIALIZER;
別の時点で彼らは使用していthe_condition_variable.wait(lock);
ます...この行は、次のようにpthreadsで書き直します:pthread_cond_wait( &m_condition, &m_mutex);
私は正しい軌道に乗っていますか?