进程、线程、协程
- 进程:应用步伐的启动实例,运行起的代码叫进程,有独立的内存空间,类比工厂的P个(P=1单进程,P>1多进程)车间。
- 线程:线程是CPU调度的最小单位,是进程内的执行单位,多个线程共享所属进程的资源。类比车间内的T个员工(T=1单线程,T>1多线程)车间。
- 协程:雷同线程,协程是用户态(CPU受限执行用户步伐指令),线程是内核态(CPU恣意可在操作系统中恣意执行任何指令)。通常在函数内部运行,并且可以在函数的不同部分之间停息和恢复执行(最明显的特点就是协程不一定会跟着函数的return而竣事,下次调用时能保留上调用时的状态)。
多进程、多线程怎么选?
做PHP的是几乎不用考虑的,毕竟不是C/C++这种偏底层得当做C/S或单Client的应用,PHP大多都是LAMP或LNMP的架构,结合Windows Server用IIS多线程的从来还没有遇见过。
- 多进程适用场景:
- CPU密集型任务:对于必要大量计算的任务,多进程可以充实利用多核处理器的优势,进步团体处理速度。
- 独立性要求高:如果任务之间必要完全独立的内存空间和资源,避免相互影响,多进程是更好的选择。
- 故障隔离:多进程能够提供更好的故障隔离性,一个进程崩溃不会影响其他进程,进步了系统的可靠性。
- 跨平台兼容性:多进程在跨平台兼容性方面表现更好,因为不同操作系统有不同的线程实现,而进程模型更为统一。
- 多线程适用场景:
- I/O密集型任务:对于必要频繁举行I/O操作的任务,多线程能够更好地利用等待时间,进步系统的相应速度。
- 资源共享:多线程适用于必要共享数据或资源的场景,能够更轻松地实现数据共享和通讯。
- 及时性要求高:多线程能够更快速地相应事件和处理任务,得当必要及时性的应用场景。
- 内存消耗较低:线程间共享同一进程的内存空间,相比多进程消耗的内存较少。
- GUI编程:图形界面步伐通常必要不同的线程处理用户交互和界面更新,多线程能够进步界面的相应性和流畅性。
多线程实现
- cd /test
- wget https://pecl.php.net/get/parallel-1.2.1.tgz
- tar zxf parallel-1.2.1.tgz
- cd parallel-1.2.1/
- /usr/local/php8.1/bin/phpize
- make
- make install
- vim /usr/local/php/etc/php.ini
- extension=parallel
复制代码 通例测试,输出@@@%%%,说明步伐是从上到下依次执行的。
[code]vim /test/a.php |