您现在的位置是:首页 > 正文

高性能计算实验三3 Pthreads 求解二次方程组的根

2024-04-01 04:36:11阅读 2

代码:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <math.h>


int done=0;
double a,b,c,d;
double x1,x2;

pthread_mutex_t m=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;

void thr_exit(){
	pthread_mutex_lock(&m);
	done++;
	if(done==2)
		pthread_cond_signal(&cond);
	pthread_mutex_unlock(&m);
}


void *child1_add(void *arg){
	printf("child1\n");
	if(d>=0)
		x1=(-b+d)/ (2 * a);
	thr_exit();
	return NULL;
}

void *child2_sub(void *arg){
	printf("child2\n");
	if(d>=0)
		x2=(-b-d)/ (2 * a);
	thr_exit();
	return NULL;
}

void thr_join(){
	pthread_mutex_lock(&m);
	while(done<2)
		pthread_cond_wait(&cond,&m);
	pthread_mutex_unlock(&m);
}

int main(int argc,char *argv[]){
	a= atoi(argv[1]); 
  	b= atoi(argv[2]); 
	c = atoi(argv[3]); 
	d = sqrt(b * b - 4 * a * c);
	printf("parent:begin\n");
	pthread_t p1,p2;
	pthread_create(&p1,NULL,child1_add,NULL);
	pthread_create(&p2,NULL,child2_sub,NULL);
	thr_join();
	if(d>=0)
		printf("x1=%.4f, x2=%.4f\n", x1, x2);
	else
		printf("no answer!");
	printf("parent:end\n");
	return 0;
}

 运行:

网站文章

  • LWZ压缩编码原理与C++实现

    LWZ压缩编码原理与C++实现

    LWZ编码原理LZW算法又叫“串表压缩算法,”就是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩,提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。编码流程步骤1:将词典初始化为包含所有可能的单字符,当前前缀P初始化为空。步骤2:当前字符C=字符流中的下一个字符。步骤3:判断P+C...

    2024-04-01 04:35:24
  • ajax给c foreach传值,如何使用下拉列表中选择的值过滤c:forEach给出的结果?

    以下是我的jsp代码。">上面的c:forEach清单Name CollName DeptNameABCD coll1 dept1kfkdb coll1 dept2jbdd coll2 dept3以下是分别列出collName和的代码deptNa...

    2024-04-01 04:35:17
  • git 拉取指定的远程分支(三种方式)

    直接拉取 git clone -b ants git@github.com:Ants-double/CareerJava.git git clone -b 远程分支名 仓库地址本地已经有相关的仓库代码//查看远程分支git branch -r//创建本地分支并关联git checkout -b 本地分支 origin/远程分支//已有本地分支创建关联git branch -...

    2024-04-01 04:35:10
  • 串行FIR滤波器

    串行FIR滤波器

    串行设计,就是在 16 个时钟周期内对 16 个延时数据分时依次进行乘法、加法运算,然后在时钟驱动下输出滤波值。考虑到 FIR 滤波器系数的对称性,计算一个滤波输出值的周期可以减少到 8 个。串行设计...

    2024-04-01 04:35:04
  • Visual Studio 秘钥

    Visual Studio 2015

    2024-04-01 04:34:23
  • win10小工具

    win10小工具

    clover给资源管理器加上标签页spacesniff图形化展示磁盘文件大小NDM下载工具

    2024-04-01 04:34:16
  • 常用正则表达式,持续更新

    常用正则表达式,手机号,身份证号,邮编

    2024-04-01 04:34:09
  • 使用swagger上传文件时,报错 Content type &#39;multipart/form-data;boundary=----WebKitFormBoundaryRAYPKeHKTYSNdzc1

    使用swagger上传文件时,传参包括一个文件类型的数据,和一个对象实体,上传时报错: &quot;timestamp&quot;: 1473349676109, &quot;status&quot;...

    2024-04-01 04:33:30
  • 一文搞懂操作系统虚拟内存管理

    一文搞懂操作系统虚拟内存管理

    早期的计算机系统中,主存容量很小,虽然主存中仅存放一道用户程序,但是存储空间放不下用户进程的现象也经常发生。比如 IBM 推出的第一台PC机最大只支持 1MB 大小的内存。因此经常会出现内存大小不够的...

    2024-04-01 04:33:24
  • 完成二十道编程题,就有机会获得作者赠书

    完成二十道C#编程入门题(任务),就有机会获得价值89元的赠书《31天学会CRM项目开发(C#编程入门及项目实战)》,面向编程新手,仅限十本,送完为止。搜索书名,加入读者群,领取任务。...

    2024-04-01 04:33:17