当前位置:网站首页>std::condition_ variable::wait_ for
std::condition_ variable::wait_ for
2022-06-13 05:02:00 【Snow * sleet * snow】
wait:https://blog.csdn.net/qq_34999565/article/details/120874408?utm_source=app&app_version=4.17.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
Examples of use , and wait Is the difference between the wait_for You can set a timeout
#include <iostream>
#include <atomic>
#include <condition_variable>
#include <thread>
#include <chrono>
using namespace std::chrono_literals;
std::condition_variable cv;
std::mutex cv_m;
int i;
void waits(int idx)
{
std::unique_lock<std::mutex> lk(cv_m);
if(cv.wait_for(lk, idx*100ms, []{
return i == 1;}))
std::cerr << "Thread " << idx << " finished waiting. i == " << i << '\n';
else
std::cerr << "Thread " << idx << " timed out. i == " << i << '\n';
}
void signals()
{
std::this_thread::sleep_for(120ms);
std::cerr << "Notifying...\n";
cv.notify_all();
std::this_thread::sleep_for(100ms);
{
std::lock_guard<std::mutex> lk(cv_m);
i = 1;
}
std::cerr << "Notifying again...\n";
cv.notify_all();
}
int main()
{
std::thread t1(waits, 1), t2(waits, 2), t3(waits, 3), t4(signals);
t1.join();
t2.join();
t3.join();
t4.join();
}
Output :
Thread 1 timed out. i == 0
Notifying…
Thread 2 timed out. i == 0
Notifying again…
Thread 3 finished waiting. i == 1
2
3
边栏推荐
猜你喜欢

metaRTC4.0稳定版发布

Recursion and recursion

How to lay copper in AD (aluminum designer)

Analysis on the similarities and differences of MVC, MVP and mvvc

Dynamic and static libraries

External sort

Stepping on a horse (one stroke)

Section 5 - Operator details

C language learning log 10.19

Time display of the 12th Blue Bridge Cup
随机推荐
Brick story
Mind mapping series - Database
C language learning log 1.16
CMB written test graphical reasoning
C language learning log 11.7
rainbow
QT interface rendering style
Advanced C - Section 3 - character functions and string functions
Win8.1和Win10各自的優勢
Avantages de win8.1 et win10
Luogu p1012 guess
C language learning log 1.2
C language learning log 10.8
Simple sr: Best Buddy Gans for highly detailed image super resolution Paper Analysis
Solution to sudden font change in word document editing
Recursion and recursion
17.6 unique_lock详解
Spice story
QT brushes and brushes
Differences between string() and tostring() methods