当前位置:网站首页>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
边栏推荐
- What is the saturate operation in opencv
- Solution to sudden font change in word document editing
- Simple greedy strategy
- Gradient descent, learning rate
- C language learning log 10.10
- Logical point
- Clause 27: alternatives to overloading with familiar universal reference types
- Win8.1和Win10各自的優勢
- Advanced C - Section 3 - character functions and string functions
- C language learning log 1.19
猜你喜欢

Win8.1和Win10各自的優勢

Explain the role of key attribute in V-for

Article 29: assuming that the mobile operation does not exist, is expensive, and is not used

C language learning log 11.7

Recursion and recursion

QT direction key to move focus

metaRTC4.0集成ffmpeg编译

Sampo Lock

Understanding inode

Chapter 18 pagination: Introduction
随机推荐
Optocoupler working principle function electric parameter application circuit
[JS solution] leedcode 200 Number of islands
Differences between string() and tostring() methods
RTSP streaming using easydarwin+ffmpeg
Section 5 - Operator details
Luogu p3654 fisrt step
Analysis on the similarities and differences of MVC, MVP and mvvc
Binary search and binary answer
C language learning log 1.2
Robot pose description and coordinate transformation
Simple-SR:Best-Buddy GANs for Highly Detailed Image Super-Resolution论文浅析
QT brushes and brushes
Cesium:cesiumlab makes image slices and loads slices
Embedded hardware: electronic components (1) resistance capacitance inductance
C language exercise 1
Analysis of the principle of V-model and its application in user defined components
Leetcode game 297 (20220612)
E - Lucky Numbers
The games that you've tasted
Chapter 13 abstraction: address space