Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用多进程方法计算斐波那契数?_C_Fork_Fibonacci_Multiprocess - Fatal编程技术网

C 用多进程方法计算斐波那契数?

C 用多进程方法计算斐波那契数?,c,fork,fibonacci,multiprocess,C,Fork,Fibonacci,Multiprocess,我正在编写多进程fibonacci数字计算器,我有一个跟踪fibonacci数字的文件,第一个进程打开文件并写入第一个fibonacci数字(0和1),然后执行fork及其子进程读取最后两个数字相加并将下一个数字写入文件,然后关闭文件并再次执行fork此进程继续,就像fork和child相加数字并将计算出的数字写入文件一样,在中使用fork不是一个好的解决方案,也不是递归调用,对这个问题有什么建议吗 这是我们面临的问题的联系 浅谈计算机的多进程部分 问题是第二部分 假设您以“简单”的方式计算它

我正在编写多进程fibonacci数字计算器,我有一个跟踪fibonacci数字的文件,第一个进程打开文件并写入第一个fibonacci数字(0和1),然后执行fork及其子进程读取最后两个数字相加并将下一个数字写入文件,然后关闭文件并再次执行fork此进程继续,就像fork和child相加数字并将计算出的数字写入文件一样,在中使用fork不是一个好的解决方案,也不是递归调用,对这个问题有什么建议吗

这是我们面临的问题的联系 浅谈计算机的多进程部分 问题是第二部分


假设您以“简单”的方式计算它们(即不使用狡猾的公式),我认为它根本不是并行处理的好选择


很容易找到一个O(n)解,但每个结果都取决于前一个结果,因此并行化本身就很棘手。我看不出您当前的并行方法有什么好处,因为在每个进程完成了自己的工作并让一个孩子获得下一个数字后,基本上就完成了。。。因此,您不妨在现有进程中完成分叉子进程的工作。

使用多进程计算斐波那契数是一个非常奇怪的想法。事实上,要计算一个数字,你需要知道前两个。多个进程不能计算其他数字,只能计算下一个数字,并且只能计算下一个数字。多个进程都将计算下一个斐波那契数。无论如何,您要仔细检查。

您可能想看看这篇文章:

这里有更多的想法:


也许这并不能解决您的问题,但这里有一个简单的方法来计算给定范围内的斐波那契数



int fibo(int n){return(nYeah这是家庭作业,我写代码,但使用for是一个性能问题,我正在寻找解决方案…为什么你要用fork来完成它?你让你的父进程退出还是它做了什么?我们需要了解更多关于赋值的信息。你为什么要使用fork?这是关于文件锁定的赋值吗?你不能Don’不要使用那个化身,它被拿走了!你不是Jeff,他只是用叉子吃饭。大约有100个叉子可以用64位表示,所以没有理由使用并行计算。我知道这不是解决这个问题的好方法,但重要的是要证明多线程部分比这个解决方案更好,这个问题也有多线程编写部分。它只是comparison@Burak一个算法有可以并行化的部分,也有不能并行化的部分。这个不能。@Ruslik,我知道它不是一个适合多处理的候选算法,但它是一个家庭作业,所以除了实现它,我别无选择,但我同意you@Jon飞碟,苹果,手放下我不是以这种方式使用递归算法,这里的算法不是性能问题,我知道斐波那契算法