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

操作系统实践报告

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

j=i; if(i%2==0){ sum1+=1/(2*j-1); }

// printf(\

if(i%2==1){ sum2+=1/(2*j-1); } }

// printf(\

sum=sum2-sum1; // printf(\// printf(\

result=malloc(sizeof(result)); result->sum=sum; return result; }

int main(){ int i; float j;

float sum1=0,sum2=0,sum=0; for(i=1;i<=LEN/2;i++){ j=i; if(i%2==0){ sum1+=1/(2*j-1); }

if(i%2==1){ sum2+=1/(2*j-1); } }

sum=sum2-sum1; // printf(\ pthread_t sub;

pthread_create(&sub,NULL,subThread,NULL); struct result *result;

pthread_join(sub,(void **)&result); sum+=result->sum;

printf(\ return 0; }

pi2.c: 使用N个线程根据莱布尼兹级数计算PI

? ? ? ?

思路:

设计算公式前1000项,读取用户输入的线程数目N,通过

pthread_create(&workers[i-1],NULL,compute,myparam);产生N个线程,并且通过myparam设置每一个线程计算的起始项和终止项,通过pthread_join(workers[j],(void **)&myresult);等待每个线程结束并通过result获取结果,将结果相加即可。 源代码:

#include

与上一题类似,但本题更加通用化,能适应N个核心,需要使用线程参数来实现 主线程创建N个辅助线程

每个辅助线程计算一部分任务,并将结果返回

主线程等待N个辅助线程运行结束,将所有辅助线程的结果累加

#include #include #include

#define LEN 10000

#define MAX_WORKERS 100 struct param{ int start; int end; };

struct result{ float sum; };

void *compute(void *arg){

int i; float j;

struct param *myparam; myparam=(struct param *)arg; int start=myparam->start; int end=myparam->end; struct result *myresult;

float sum1=0,sum2=0,sum3=0; for(i=start;i<=end;i++){ j=i; if(i%2==0){ sum1+=1/(2*j-1); }

if(i%2==1){ sum2+=1/(2*j-1); } }

myresult=malloc(sizeof(struct result)); myresult->sum=sum2-sum1; return myresult; }

int main(){

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