【发布时间】:2019-05-04 12:32:23
【问题描述】:
大家好,我在代码中遇到了一个小问题
这个程序应该计算 ( (a+b) x (c+d) ) / e
创建三个线程,一个用于 仅加法 仅乘法 分工
main() 中只能创建一个线程 在除法线程中显示结果。 int 值(a, b, c, d, e) 应该从 main 中的用户那里获取并传递给 main 中创建的线程。每一步的其他结果应该在下一步传递。
这是我为上述场景编写的程序
#include <iostream>
#include <pthread.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void *Division(void *arg_div)
{
int result = arg_div[0]/arg_div[1];
cout << result ;
pthread_exit(NULL);
}
void *Multiplication(void *arg_mul)
{
int arg1[2];
arg1[0]=arg_mul[0]*arg_mul[1];
arg1[1]=arg_mul[2];
pthread_t div;
pthread_create(&div,NULL,Division,(void*)arg1);
pthread_join(div,NULL);
pthread_exit(NULL);
}
void *Addition(void *arg_add)
{
int arg[3];
arg[0]=arg_add[0]+arg_add[1];
arg[1]=arg_add[2]+arg_add[3];
arg[2]=arg_add[4];
pthread_t ad;
pthread_create(&ad,NULL,Multiplication,(void*)arg);
pthread_join(ad,NULL);
pthread_exit(NULL);
}
int main()
{
int values[5];
for(int i=0;i<5;i++)
{
cin >> values[i];
}
pthread_t pa;
pthread_create(&pa,NULL,Addition,(void*)values);
pthread_join(pa,NULL);
return 0;
}
【问题讨论】:
-
void *Division(void *arg_div)->void Division(void *arg_div)用于您的每个功能。
标签: c++ linux operating-system pthreads