純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
- 三個執行緒迴圈列印123-多執行緒執行緒
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- 【unity】 Loom實現多執行緒UnityOOM執行緒
- JavaScript如何實現多執行緒?JavaScript執行緒
- Java多執行緒實現方式Java執行緒
- 多執行緒具體實現執行緒
- Runnable介面實現多執行緒執行緒
- Java多執行緒的實現Java執行緒
- AA BB CC AA執行緒列印 ,CC執行緒列印執行緒
- 【連載 02】多執行緒實現執行緒
- 多執行緒爬蟲實現(上)執行緒爬蟲
- 用Pthread實現多執行緒操作thread執行緒
- C++-(25)-多執行緒-POSIX(3)-互斥量-pthread_mutexC++執行緒threadMutex
- Python簡單實現多執行緒例子Python執行緒
- 【QT】QtConcurrent::run()+QThreadPool實現多執行緒QTthread執行緒
- Java多執行緒【三種實現方法】Java執行緒
- 用多執行緒,實現併發,TCP執行緒TCP
- 多執行緒伺服器的實現執行緒伺服器
- 多執行緒基礎-基礎實現執行緒
- 面試-實現多執行緒的方式面試執行緒
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- 5招教你實現多執行緒場景下的執行緒安全!執行緒
- 多執行緒和多執行緒同步執行緒
- Java之實現多執行緒的方式三:實現Callable介面(結合執行緒池使用)Java執行緒
- 【C++11多執行緒入門教程】系列之互斥量mutexC++執行緒Mutex
- C++11多執行緒程式設計(二)——互斥鎖mutex用法C++執行緒程式設計Mutex
- 【多執行緒高併發程式設計】二 實現多執行緒的幾種方式執行緒程式設計
- 執行緒與多執行緒執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒