协程swoole对比golang
协程概念 协程(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。 协程具有以下几个特点 用户态执行,完全由程序所控制,不是被操作系统内核所管理的 适用于处理IO密集型任务,至于什么是IO密集型任务这里就不做详细介绍了,主要区别于CPU密集型任务 将线程中的竞争资源,转化成协作运行 通道(Channel)的方式进行协程间的通信 少量的上下文切换开销,主要是运行在线程上,对比进程的上下文切换是保存在栈资源当中,而协程是异步非阻塞的,相当于用户态线程中的队列任务,只需要利用channel作为回调即可,不需要在任务完成后二次的资源抢夺 Swoole 协程 单进程模型,实现方式相对简单 / 不用加锁 / 性能高,基于单线程的,无法利用CPU多核,运行在用户进程中 echo "main start\n"; go(function () { echo "coro ".co::getcid()." start\n"; co::sleep(.1); echo "coro ".co::getcid()." end\n"; }); echo "main flag\n"; go(function () { echo "coro ".co::getcid()." start\n"; co::sleep(.1); echo "coro ".co: