首先需要明白并发与并行的区别,并发是只多个任务在一段时间内交替执行,并行是多个任务可以在同一时刻同时执行。同一时刻可以执行的任务数取决于cpu的核数。sysctl -n machdep.cpu.core_count。 接着讨论一个问题:cpu密集型与IO密集型 Cpu密集型任务特点是要进行大量的计算, IO密集型网络、磁盘IO的任务都是IO密集型任务,任务的大部分时间是在等待io操作完成。 CPU密集型 计算20000到100000之间的质数 单进程 const M = 20000; const N = 100000; for($i= M;$i<=N;$i++) { $mark =1; for($j=2; $j<$i/2;$j++) { if($i%$j == 0) { $mark =0; break; } } } 多进程 const NUM = 5; for ($i = 0; $i < NUM; $i++) { $pid = pcntl_fork(); if ($pid == 0) { for ($j = M+$i; $j<N; $j+=NUM) { $mark =1; for($n=2; $n<$j/2;$n++) { if($j%$n == 0) { $mark =0; break; } }
Php swoole协程揭秘
最新推荐文章于 2024-01-17 17:56:44 发布
本文探讨了并发与并行的区别,并通过CPU密集型和IO密集型任务的实例展示了多进程、多线程以及Swoole协程在处理任务时的性能差异。在IO密集型任务中,Swoole协程表现出了显著的优势,能够实现异步操作,提升效率。协程虽不能解决CPU密集型任务,但在处理异步IO时,能有效减少上下文切换成本。
摘要由CSDN通过智能技术生成