【发布时间】:2020-09-20 20:05:00
【问题描述】:
我正在尝试解决表达式 (a+bc) / (a-b+dc) + abcd ,具有不同的过程。但我不知道fork() 是如何工作的。我知道它就像一个新线程,但我怎样才能将结果加入另一个线程并在操作完成后完成每个“孩子”?
我的代码:
int arithOpera (int a, int b, int c, int d){
int pid, pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, pid9;
pid = fork();
int term1, term2, term3;
if (pid == 0) {
sol = term1 / term2;
}
else {
pid1 = fork();
if (pid1 == 0) {
term3 *= d;
}
else {
pid2 = fork();
if (pid2 == 0) {
term3 *= c;
}
else {
pid3 = fork();
if (pid3 == 0) {
term3 = a*b;
}
else {
pid4 = fork();
if (pid4 == 0) {
term2 -= c;
}
else {
pid5 = fork();
if (pid5 == 0) {
term2 += d;
}
else {
pid6 = fork();
if (pid6 == 0) {
term2 = a-b;
}
else {
pid7 = fork();
if (pid7 == 0) {
term1 += a;
}
else {
pid8 = fork();
if (pid8 == 0) {
term1 = b * c;
}
else {
sol += term3;
}
}
}
}
}
}
}
}
}
}
return sol;
}
我应该在不同的线程中执行每个操作。
【问题讨论】:
-
fork创建一个独立的进程。看它就像fork创建一个独立于当前运行程序运行的全新程序。因此,他们不能自然地在他们之间共享数据,而不是没有额外的工作。对于这样的事情,使用进程(甚至线程)真的没有什么意义。 -
为什么要使用fork?相关:stackoverflow.com/q/14170647/6699433
标签: c operating-system fork fork-join