6

PHP 显然现在支持一个Thread类。还有一个MutexCond类。尽管如此,还是需要用好的选项编译它并添加一个 PECL 扩展来拥有它。

有没有好的教程从哪里开始?清楚地显示每个类/方法的合理使用的东西。

我只是不知道如何处理这些课程。我需要一些具体的例子来做非常简单的事情,展示尽可能多的方法。

谢谢你。

4

2 回答 2

14

它已在 pecl 上发布,在 github 页面上下载 windows ... git (source) 如果可以的话,更新的代码 ...

http://pthreads.org包含更多信息,并检查示例文件夹...

如果您更具体地了解您需要做什么,我可以提供准确的答案,请随时直接与我联系...

抱歉缺少文档,我正在积极开发 pthreads 在我工作的那一点点时间里——它是在我下班度假时写的,现在我又回来工作了——文档将尽快更新当我找到时间。

线程通常是一件复杂的事情,但它不一定是……见过少于 100 行的线程池吗??https://github.com/krakjoe/pthreads/blob/master/examples/Pooling.php ...有一个!

你不需要知道条件或互斥锁来操作 PHP 中的线程,pthreads 包括简单的 peasy 一切......

跳上船,毫无疑问,我会完善它...

于 2012-10-11T08:07:55.340 回答
1

在任何语言中,线程化都不容易。它需要不同的思路(非线性)。由于您提到的内容在任何已发布的 PHP 版本中均不可用,因此我建议您使用 pctnl 和 shmop 功能。特别是 pcntl_fork。两者都已经存在了一段时间并受到支持。它是多处理而不是线程,但可以完成您正在寻找的内容。但是线程更有效。

通常,您会使用分叉让父进程检查工作,将其委托给分叉进程,然后在子进程完成工作时检查更多工作。父进程可以检查子进程的状态。例如,您可以确保只派生一定数量的子进程,并在派生另一个子进程之前等待一个完成。

我已经分叉了多达 500 个进程,此时 CPU 负载很高。如果负载太高,父进程将检查系统负载并且不再分叉。

如果你真的需要,你可以使用带有分叉的共享内存(shmop 函数)来获得你可以通过线程获得的大部分功能。

于 2012-10-09T02:03:26.747 回答