尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

C++变成的多线程同步

C++变成的多线程同步 C++多线编程通过上一节介绍的Release-Acquire抽象语义来保证共享变量的读写顺序,避免编译器/CPU乱序等的影响,除此之外我们还需要考虑多线程间同步的实现,本节我们介绍一下如何实现多线程同步。主要通过互斥锁和条件变量来实现給出一段实例代码#include iostream #include thread #include mutex #include condition_variable #include vector std::condition_variable cv_start; std::mutex mtx; bool start_flag = false; // 条件,必须mutex保护 void worker(int id) { std::unique_lockstd::mutex lock(mtx); cv_start.wait(lock, [](){ return start_flag; }); // wait返回后,依然持有mtx;这里尽快释放锁,不要拿着锁做业务 lock.unlock(); // 业务逻辑:多个线程被唤醒后并发执行 std::cout "thread " id " started work\n"; std::this_thread::sleep_for(std::chrono::milliseconds(200)); std::cout "thread " id " finished\n"; } int main() { const int thr
返回列表