我正在使用fork()创建子进程。由于子进程从父进程继承数据,我在父进程中创建一个数组并在我的子进程中调用calc函数,该函数计算数组中具有奇数索引的所有元素的总和。它给了我一个错误......
bind
如果子进程继承数据,在这种情况下,父类中的数组'arr',为什么它会给我这个错误?我的代码如下。
this.setState({
loading: true
},this.props.tooltipRefresher.bind(this.props));
答案 0 :(得分:2)
就编译器而言,fork
只是一个正常的函数。
int sum = calc(arr);
在代码的这一点上,范围内没有arr
变量,因此您会收到错误。
另一方面,fork
创建正在运行的进程的副本。在fork
处,父进程中没有arr
数组,因此子进程也不会拥有它。 arr
仅在fork
:
// the parent process will create an array with at least 10 element
int arr[] = { 1, 2, 5, 5, 6, 4, 8, 9, 23, 45 };
如果您希望变量在两个流程中都存在,则需要在调用fork
之前创建该变量。