我正在开发一个Drupal模块,在这些模块中我需要执行相同部分代码的5倍,所以,我认为我可以并行执行它以提高执行速度,但我不是&# 39;我想使用pcntl_fork
,我想使用pthread
。
现在的问题是:php的pthread
库是否与c
中的库相同?
我可以在php中实现内核级线程吗?
因为我认为如果php pthread是用户级别我在我的情况下使用它没有任何好处
感谢回复
答案 0 :(得分:7)
pthreads API 有助于用户范围内的多线程:它不会创建绿色或用户线程。
绿色线程被实现为一种合作或抢占式多任务处理,其语言的虚拟机或环境尚未为真正的多线程执行做好充分准备。
PHP 为多线程执行做好准备,它有一个合适的线程模型,因此不需要绿色线程。
PHP中的pthreads不是绿色线程,它们是使用Posix线程实现的,它们是内核线程
http://en.wikipedia.org/wiki/Green_threads
http://en.wikipedia.org/wiki/Kernel_thread
我假设你打算让这些线程由前端执行(也就是说,应客户端请求在web服务器内)。
我恳请你不要这样做;基本数学禁止执行模型,其中请求导致从缩放调度X线程。
如果您的应用程序的一部分需要提供的线程,那么从前端(Web服务器)中分离出应用程序的那部分,将其完全隔离,通过一些理智的RPC将其作为与您的前端进行通信的系统服务执行。