php为什么没有多线程,为什么在PHP中使用多线程不是一个好主意?

分叉是否创建了一个线程?

当我们分叉一个进程时,进程空间,也就是说进程所需的库和代码所在的内存区域是重复的,然后不同但相关的进程继续按照操作系统调度程序的意愿执行在不同的记忆区域.

分叉进程和线程有什么区别?

当我们创建一个Thread时,我们告诉操作系统我们想要另一个可以在与创建它的Process相同的内存区域中运行的执行单元.

不同的操作系统实际上如何实现线程和进程超出了这个答案的范围,并不重要.

为什么分叉在前端是个坏主意?

当您复制整个地址空间时,您复制了Web服务器正在运行的内存区域,这显然会对您的操作系统造成严重破坏.

为什么在前端遇到一个坏主意?

如果客户端脚本指示操作系统在直接响应Web请求时创建8个线程,并且100个客户端同时请求该脚本,那么您将指示操作系统同时执行800个线程.

CPU和操作系统需要看起来非常不同才能让它成为一个好主意!

在哪里有一个好主意?

多线程软件和功能非常强大的硬件无处不在;没有它,计算就不会是它.

在Web基础结构的上下文中,mysql和其他数据库服务器是多线程的,事实上Apache可以在多线程基础结构中部署PHP,但我不推荐它.

当我们看看像mysql这样有进取心的应用程序实际上如何提供极其复杂的服务时,我们可以看到它们的进程(以及线程)与Web应用程序的基础结构完全隔离.

这就是我们如何在支持它们的语言中使用Threads;我们设计的系统提供服务的方式是通过一些理智的IPC形式,我们完全将我们的复杂基础设施与简单的应用程序隔离开来:我们的Web应用程序.

PHP真的适合Threads吗?

PHP的内存模型没有任何共享:这意味着PHP需要操作的结构和内存意义上的每个解释器上下文都与任何其他上下文隔离.

这总是必须适用于PHP按预期工作; PHP的线程实现,不知道PHP工作的方式根本不起作用.

pthreads竭尽全力确保内存模型不被破坏,每个Thread确实不会直接与任何其他Thread共享内存.

线程真的适合我吗?

首先,认真思考以下问题:

>真的需要线程吗?

>您可以通过哪些其他方式来实现您打算做的任何事情?

多线程软件本质上是复杂的;在我看来,复杂的东西不是避免它的借口.

但请注意,多线程软件与普通PHP应用程序根本不同,您必须考虑以前从未考虑过的事情,在开始第一个Thread之前要注意一些无关紧要的事情.

你不应该猜测这些东西是什么,你应该尽可能彻底地教育自己,甚至准备好失败,坚持下去.

随着知识的增加,任何事物的复杂性都会降低,这就是学习的方式,这就是它开始的地方:

在我看来,它继续在手册中,在使用pthreads分发的许多示例中,在stackoverflow搜索和问题中,并导致荣耀.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值