一 生产者消费者:
std::mutex mu;
deque<int> q;
condition_variable CR;
void produce()
{
int count = 10;
while (count>0)
{
unique_lock<mutex> lock(mu);
cout << " product 生产了" << count << endl;
q.push_front(count);
lock.unlock();
CR.notify_all();
Sleep(1);
count--;
}
}
void consume()
{
int data = 0;
while (data!=1)
{
unique_lock<mutex> lock(mu);
CR.wait(lock, [](){return !q.empty(); });
data = q.back();
q.pop_back();
lock.unlock();
cout << "consumer got a value from product" << data << endl;
}
}
int main()
{
thread T1(produce);
thread T2(consume);
T1.join();
T2.join();
}
二 循环打印ABC
std::mutex mu;
void A()
{
for (int i = 0; i < 10; i++)
{
lock_guard<mutex> lock(mu);
cout << 'A';
Sleep(10);
}
}
void B()
{
for (int i = 0; i < 10; i++)
{
lock_guard<mutex> lock(mu);
cout << 'B';
Sleep(10);
}
}
void C()
{
for (int i = 0; i < 10; i++)
{
lock_guard<mutex> lock(mu);
cout << 'C';
Sleep(1);
}
}
int main()
{
thread T1(A);
thread T2(B);
thread T3(C);
T1.join();
T2.join();
T3.join();
}