为什么这个例子会出现段错误?

时间:2015-02-16 21:17:11

标签: php multithreading segmentation-fault pthreads

我在this example中注意到第15行$this->rows[]=$row;会出现段错误的注释。但我不明白为什么。有人可以向我解释一下吗?

2 个答案:

答案 0 :(得分:2)

它将出现故障或意外行为(当前版本不应出错)。

原因是成员$this->rows不是线程安全数组,它是正常数组。

正常数组被序列化以作为对象的成员存储,所以

$this->array[] = $row;

没有意义;您无法附加到序列化数组。

在示例中,它在方法范围内构建$rows并使用$this->rows = $rows;一次设置对象成员。

线程安全数组,它是一个Threaded对象(它们都像数组一样,并带有一些合理的操作方法,如pop和shift),没有相同的限制。

答案 1 :(得分:0)

根据Github上的Blame工具,我们应该尝试分页Joe Watkins(@krakjoe)......

编辑:就我自己而言,“内存不足”错误是我能想到的最好的主意。 (谷歌搜索有问题的行,只有有用的结果是关于低内存限制)