第一范文网 - 专业文章范例文档资料分享平台

操作系统实践报告

来源:用户分享 时间:2025/5/25 12:10:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

}

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文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0yw1v46i111qw0b8cvba7dd7d92wae01atb_9.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top