純Mutex實現多執行緒交替列印
#include<iostream>
#include<mutex>
#include<string>
#include<thread>
#include<chrono>
using namespace std;
mutex m;
bool PrintFlag = false;
void thread1(const string&s)
{
size_t i = 0;
unique_lock<mutex> ul(m);
while (true)
{
if (!ul)
ul.lock();
if (PrintFlag)
{
if (i<s.length())
{
PrintFlag = !PrintFlag;
cout.put(s[i]);
++i;
}
}
ul.unlock();
}
}
void thread2(const string&s)
{
size_t i = 0;
unique_lock<mutex> ul(m);
while (true)
{
if (!ul)
ul.lock();
if (!PrintFlag)
{
if (i < s.length())
{
PrintFlag = !PrintFlag;
cout.put(s[i]);
++i;
}
}
ul.unlock();
}
}
int main()
{
thread td1(thread1, "1234567");
thread td2(thread2, "ABCDEFG");
td1.detach();
td2.detach();
this_thread::sleep_for(chrono::seconds(10));
return 0;
}
相關文章
- 如何讓兩個執行緒交替列印數字執行緒
- 多執行緒實現順序迴圈列印執行緒
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- 面試題-使用執行緒交替列印奇數偶數面試題執行緒
- 面試題 - 使用執行緒交替列印奇數偶數面試題執行緒
- 如何實現多執行緒執行緒
- 多執行緒原理實現執行緒
- C#多執行緒(4):程式同步Mutex類C#執行緒Mutex
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- Java多執行緒實現方式Java執行緒
- 多執行緒具體實現執行緒
- Java多執行緒的實現Java執行緒
- JavaScript如何實現多執行緒?JavaScript執行緒
- Runnable介面實現多執行緒執行緒
- python多執行緒實現Python執行緒
- NSThread實現多執行緒thread執行緒
- NSThread多執行緒實現thread執行緒
- 多執行緒-匿名內部類的方式實現多執行緒程式執行緒
- 三個執行緒迴圈列印123-多執行緒執行緒
- 多執行緒爬蟲實現(上)執行緒爬蟲
- java實現多執行緒的方法Java執行緒
- 面試-實現多執行緒的方式面試執行緒
- Java多執行緒的實現方法Java執行緒
- 多執行緒-多執行緒方式1的程式碼實現執行緒
- 用多執行緒,實現併發,TCP執行緒TCP
- 多執行緒伺服器的實現執行緒伺服器
- 多執行緒基礎-基礎實現執行緒
- Java多執行緒【三種實現方法】Java執行緒
- 用Pthread實現多執行緒操作thread執行緒
- Java多執行緒-基礎及實現Java執行緒
- Swift實現多執行緒map函式Swift執行緒函式
- JAVA多執行緒下載的實現Java執行緒
- 實現FTP多執行緒下載 (轉)FTP執行緒
- 在Vb下實現多執行緒 (轉)執行緒
- 實驗--多執行緒執行緒
- 5招教你實現多執行緒場景下的執行緒安全!執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒