当前位置:首页 > 操作系统实践报告
}
ring.c: 创建N个线程,它们构成一个环
? ? ? ? ? ? ? ? ?
思路:
设置三个全局变量N、count和finalData,主线程创建一个子线程,该子线程执行add函数,并且等待子线程介入,其中add函数执行加一操作并且add函数中也创建新的线程执行add函数,并且等待新的线程结束,并将count加一并判断是否小于N,一旦等于N则不再创建新的线程并将计算结果赋值给finalData。在主线程中设置一个while循环,将finalData作为参数传递给主线程创建的第一个子线程。 源代码:
#include
创建N个线程:T1、T2、T3、… TN T1向T2发送整数1 T2收到后将整数加1 T2向T3发送整数2 T3收到后将整数加1 T3向T4发送整数3 …
TN收到后将整数加1 TN向T1发送整数N
#include
#define N 2 int count=0;
pthread_t workers[N+1]; pthread_t init_id; int finalData;
struct param { };
void *addmm(void *arg){
if(count pa->data++; pthread_create(&id,NULL,addmm,pa); pthread_join(id,NULL); return NULL; count++; sleep(1); struct param *pa=(struct param *)arg; pthread_t id; printf(\printf(\ printf(\printf(\ int data; }else{ pa->data++; finalData=pa->data; return NULL; } } int main(){ } struct param mpa; mpa.data=1; struct result *re; while(1){ } pthread_create(&init_id,NULL,addmm,&mpa); pthread_join(init_id,(void **)&re); mpa.data=finalData;
共分享92篇相关文档