#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <unistd.h>
#include <atomic>
#define THRNUM 4
static int num=0;
std::mutex m;
std::condition_variable cond;
using namespace std;
int next(int n)
{
if(n +1 ==THRNUM)
return 0;
return n+1;
}
void fun(int i)
{
while(1)
{
std::unique_lock<std::mutex> lk(m);
while(num != i)
cond.wait(lk,
[=]{return num != i ?false :true;});
int c = 'A'+num;
write(1,&c,1);
num = next(num);
lk.unlock();
cond.notify_all();
}
}
int main(int argc, char *argv[])
{
std::thread t[4];
for(int i = 0;i<THRNUM;i++)
{
t[i]=std::thread(fun,i);
}
for(int i=0;i<THRNUM;i++)
{
t[i].join();
}
return 0;
}
c++多线程循环输出ABCD
最新推荐文章于 2024-05-10 21:41:07 发布