操作系统实践报告

}

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 #include #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;


操作系统实践报告.doc 将本文的Word文档下载到电脑
搜索更多关于: 操作系统实践报告 的文档
相关推荐
相关阅读