总结:
A: 个人理解:多进程、协程的区别:
相同点:
都是达到并发的处理很多任务的目的
都是起多个 程序。
不同点:
1、达到并发:协程是一个进程。进程必须多个。只能 一个CPU上来回跳,多个CPU上等着执行。
2、没有等待、阻塞的情况下,协程没毛用。因为CPU一直在运行,没有空闲时间搞什么并发去。
B:两个都可以创建多个。
C:新版swoole里没有线程的概念。有线程也是廖雪峰的源码里有,人家是c
重要底层参考(自己的文章):线程是来干嘛的
PHP的多进程、线程顶多就是处理后台复杂任务
参照物就是结合实际:
参照物很重要:
php-fpm或swoole的多worker,都是多进程。
这里的多,是针对网络上大批量的请求而言的。处于网络请求阶段的多,处理很多网络请求。
而我现在是要多进程处理一个文件。
这个多的时间点是:某一个网络请求后,目的:想要再启动多个进程分开处理原来的一个任务。
结合swoole来说才有意义:
官网原话:
1、什么是协程
协程可以简单理解为线程,只不过这个线程是用户态的,不需要操作系统参与,创建销毁和切换的成本非常低,和线程不同的是协程没法利用多核 cpu 的,想利用多核 cpu 需要依赖 Swoole 的多进程模型。
2、如果同时有成千上万的并发请求,某一时刻某个进程内部会存在成千上万的协程,那么 CPU 资源是有限的,到底执行哪个协程的代码?
决定到底让 CPU 执行哪个协程的代码决断过程就是协程调度