多线程场景练习
场景1
有四个线程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....
D:4 1 2 3 4 1....
代码实现:
#include <iostream>
#include <cstdlib>
#include <pthread.h>
#include <unistd.h>
#include <fstream>
using namespace std;
#define num_threads 4
pthread_cond_t ready = pthread_cond_initializer; // 线程ready
pthread_mutex_t mutex = pthread_mutex_initializer; // 条件变量ready的互斥锁
pthread_mutex_t c_mutex = pthread_mutex_initializer; // 为了保险,将sequence的访问也加上互斥锁
int state = 1; // 全局进程状态ready标记,1 表示线程1ready,2 表示线程2 ready,3 表示线程3 ready,4表示线程4 ready
int sequence[] = {1, 2, 3, 4}; // 初始的文件内容的写入顺序,后期每一次操作4个文件,便重新利用函数constructwritesequence() 构建一次sequence
s