Php swoole协程揭秘

本文探讨了并发与并行的区别,并通过CPU密集型和IO密集型任务的实例展示了多进程、多线程以及Swoole协程在处理任务时的性能差异。在IO密集型任务中,Swoole协程表现出了显著的优势,能够实现异步操作,提升效率。协程虽不能解决CPU密集型任务,但在处理异步IO时,能有效减少上下文切换成本。
摘要由CSDN通过智能技术生成
首先需要明白并发与并行的区别,并发是只多个任务在一段时间内交替执行,并行是多个任务可以在同一时刻同时执行。同一时刻可以执行的任务数取决于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;
                }
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值