题目:有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式:
A:1 2 3 4 1 2....
B:2 3 4 1 2 3....
C:3 4 1 2 3 4....
A:1 2 3 4 1 2....
B:2 3 4 1 2 3....
C:3 4 1 2 3 4....
D:4 1 2 3 4 1....
c++11代码:
#include<iostream>
#include<thread>
#include<mutex>
#include<condition_variable>
#include<stdlib.h>
using namespace std;
#define LOOP 10
mutex m;
condition_variable cond;
int flag;
void fun(int num){
for(int i=0;i<LOOP;i++){
unique_lock<mutex> lk(m);
while(flag!=num)
cond.wait(lk);
cout<<num+1<<" ";
flag=(flag+1)%4;
cond.notify_all();
}
}
int main(int argc,char* argv[]){//argv[1]为0时写入A文件,2时写入B文件...
flag=atoi(argv[1]);
thread one(fun,1);
thread two(fun,2);
thread three(fun,3);
fun(0);
one.join();
two.join();
three.join();
cout<<endl;
return 0;
}