本文整理汇总了C++中std::condition_variable_any::notify_all方法的典型用法代码示例。如果您正苦于以下问题:C++ condition_variable_any::notify_all方法的具体用法?C++ condition_variable_any::notify_all怎么用?C++ condition_variable_any::notify_all使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类std::condition_variable_any
的用法示例。
在下文中一共展示了condition_variable_any::notify_all方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: unlock_write
//---------------------------------------------------------------------------
// function : unlock_write
/// @brief this function unlock the write operation
//---------------------------------------------------------------------------
void unlock_write( void)
{ //-------------------------- begin --------------------
std::unique_lock <spinlock> UL ( spl);
assert ( tid == this_id() and nwrite > 0) ;
nwrite -- ;
if ( nwrite == 0 )
{ cv_write.notify_all() ;
cv_read.notify_all() ;
};
};
示例2: signals
void signals()
{
std::this_thread::sleep_for(std::chrono::milliseconds(120));
std::cerr << "Notifying...\n";
cv.notify_all();
std::this_thread::sleep_for(std::chrono::milliseconds(100));
i = 1;
std::cerr << "Notifying again...\n";
cv.notify_all();
}
示例3: on_connected
void on_connected()
{
_lock.lock();
_cond.notify_all();
connect_finish = true;
_lock.unlock();
}
示例4: unlock_read
//---------------------------------------------------------------------------
// function : unlock_read
/// @brief This function unlock the read operation
//---------------------------------------------------------------------------
void unlock_read ( void)
{ //-------------------------- begin --------------------
std::unique_lock <spinlock> UL ( spl);
assert ( nread > 0 );
nread--;
if ( nread == 0 ) cv_no_readers.notify_all() ;
};
示例5: on_open
// 接続時に呼び出されるイベントリスナ
void on_open() {
std::cout << "接続しました。" << std::endl;
std::unique_lock<std::mutex> lock(sio_mutex);
is_connected = true;
// 接続処理が終わったのち、待っているメインスレッドを起こす
sio_cond.notify_all();
}
示例6: signals
void signals()
{
std::this_thread::sleep_for(std::chrono::seconds(1));
{
std::lock_guard<std::mutex> lk(cv_m);
std::cout << "Notifying...\n";
}
cv.notify_all();
std::this_thread::sleep_for(std::chrono::seconds(1));
{
std::lock_guard<std::mutex> lk(cv_m);
i = 1;
std::cout << "Notifying again...\n";
}
cv.notify_all();
}
示例7: set
void set()
{
flag.store(true, std::memory_order_relaxed);
std::lock_guard<std::mutex> lk(set_clear_mutex);
if (thread_cond)
thread_cond->notify_all();
else if (thread_cond_any)
thread_cond_any->notify_all();
}
示例8: unlock
void unlock() {
if ( --counter == 0 ) {
cv.notify_all();
} else {
std::unique_lock<sync_object_type> barrier_lock(sync);
while(counter != 0)
cv.wait_for(barrier_lock, std::chrono::milliseconds(1));
}
}
示例9: insert
void insert(T t) {
std::unique_lock<M> lock{mutex};
producers.wait(lock, [this]() { return begin != (end + 1) % SIZE; });
buffer[end] = t;
end = (end + 1) % SIZE;
consumers.notify_all();
}
示例10: extract
T extract() {
std::unique_lock<M> lock{mutex};
consumers.wait(lock, [this]() { return begin != end; });
T t = buffer[begin];
begin = (begin + 1) % SIZE;
producers.notify_all();
return t;
}
示例11: close
bool ThreadPool::close()
{
/*关闭线程池*/
std::lock_guard<std::mutex> lck(mtx);
running=false;
cond_var.notify_all();
for(auto thread:threadPool)
{
thread->join();
delete thread;
}
}
示例12: on_run
// "run"コマンドのイベントリスナ
void on_run(sio::event& e) {
std::unique_lock<std::mutex> lock(sio_mutex);
sio_queue.push(e.get_message());
// イベントをキューに登録し、待っているメインスレッドを起こす
sio_cond.notify_all();
}