网站建设药店,搭建网站需要哪些东西,dede 网站图标,12333上海公共招聘网一#xff1a;两个进程间的两个线程通信#xff0c;相当于进程间通信
二#xff1a;一个进程中的两个线程间通信 通信方式#xff1a;
1.互斥锁 mutex; lock_guard (在构造函数里加锁#xff0c;在析构函数里解锁#xff09; unique_lock 自动加锁、解锁 2.读写锁 shar…
一两个进程间的两个线程通信相当于进程间通信
二一个进程中的两个线程间通信 通信方式
1.互斥锁 mutex; lock_guard (在构造函数里加锁在析构函数里解锁 unique_lock 自动加锁、解锁 2.读写锁 shared_lock
3.信号量 c11中未实现可以自己使用mutex和conditon_variable 实现 代码实现如下 #pragma once #include mutex #include condition_variable class Semaphore { public: explicit Semaphore(unsigned int count); //用无符号数表示信号量资源 ~Semaphore();
public: void wait(); void signal(); private: int m_count; //计数器必须是有符号数 std::mutex m_mutex; std::condition_variable m_condition_variable; }; #include Semaphore.h
Semaphore::Semaphore(unsigned int count) :m_count(count) { }
Semaphore::~Semaphore() { }
void Semaphore::wait() { std::unique_lockstd::mutex unique_lock(m_mutex); --m_count; while (m_count 0) { m_condition_variable.wait(unique_lock); } }
void Semaphore::signal() { std::lock_guardstd::mutex lg(m_mutex); if (m_count 1) { m_condition_variable.notify_one(); } }
4.条件变量 condition_variable