用C语言实现线程1往一个数组里面写一次,另一个线程读两次,然后线程1更改数据。线程2再度两次
时间: 2023-12-29 09:19:22 浏览: 68
下面是一个简单的用 C 语言实现的多线程程序,其中一个线程往一个数组里写入数据,另一个线程读取数据并进行操作。具体实现细节如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define ARRAY_SIZE 10
int array[ARRAY_SIZE];
int write_index = 0;
int read_index = 0;
// 线程1
void* write_array(void* arg) {
while(1) {
// 写入数据到数组
array[write_index] = write_index;
printf("write value: %d\n", array[write_index]);
write_index++;
// 休眠1秒
sleep(1);
}
pthread_exit(NULL);
}
// 线程2
void* read_array(void* arg) {
while(1) {
// 读取数组中的数据并进行操作
for(int i = 0; i < 2; i++) {
printf("read value: %d\n", array[read_index]);
read_index++;
if(read_index == write_index) {
break;
}
}
// 休眠1秒
sleep(1);
}
pthread_exit(NULL);
}
int main() {
pthread_t tid1, tid2;
// 创建线程1和线程2
pthread_create(&tid1, NULL, write_array, NULL);
pthread_create(&tid2, NULL, read_array, NULL);
// 等待线程1和线程2结束
pthread_join(tid1, NULL);
pthread_join(tid2, NULL);
return 0;
}
```
在上述代码中,线程1通过循环不断地往数组中写入数据,每次写入后休眠1秒钟。线程2也通过循环不断地读取数组中的数据,并进行操作,每次读取后休眠1秒钟。在这个例子中,线程2每次读取两个数据。注意,在读取数据时需要判断是否已经读取完所有的数据,以免越界。
阅读全文