PHP协程初体验
By warezhou 2014.11.24
上次通过C扩展为PHP添加coroutine尝试失败之后,由于短期内啃下Zend可能性几乎为零,只能打语言原生能力的主意了。Google之后发现,PHP5.5引入了Generator和Coroutine新特性,于是才有了本文的诞生。
背景阅读
《当C/C++后台开发遇上Coroutine》
http://...
分类:
Web程序 时间:
2014-11-24 17:16:24
阅读次数:
724
Unity中的Coroutine原理猜测:虚拟机分段执行机制, 同类型嵌套用栈存放实现串行执行.
Unity中使用yield Coroutine需要注意的问题...
分类:
编程语言 时间:
2014-11-09 23:46:15
阅读次数:
317
自:http://www.zhihu.com/question/23895384说到Coroutine,我们必须提到两个更远的东西。在操作系统(os)级别,有进程(process)和线程(thread)两个(仅从我们常见的讲)实际的“东西”(不说概念是因为这两个家伙的确不仅仅是概念,而是实际存在的,...
分类:
编程语言 时间:
2014-10-30 15:14:39
阅读次数:
382
一,lua协程简介 协程(coroutine),意思就是协作的例程,最早由Melvin Conway在1963年提出并实现。跟主流程序语言中的线程不一样,线程属于侵入式组件,线程实现的系统称之为抢占式多任务系统,而协程实现的多任务系统成为协作式多任务系统。线程由于缺乏yield语义,所以运行过程中不...
分类:
其他好文 时间:
2014-10-26 22:31:33
阅读次数:
601
“疑难杂症”又二记
0. 引子
近来工作又遇到一些“疑难杂症”,在此简单记下,自省省人 ~
1. 都是WaitForSeconds 惹的祸 ~
目前开发的游戏很多地方都用到了Hotween,个人感觉还是挺不错的(题外话,Hotween的第二版Dotween应该也快正式Release了,各种改进令人期待 :)),推荐有兴趣的朋友试试,虽说自己感觉Hotween的使...
分类:
其他好文 时间:
2014-10-21 23:21:30
阅读次数:
380
因为协程的好处,所以协程库现在有好多libtask,boost::coroutine,libco......
libtask很不错,以后或许会用。
boost我个人基本很少用。
腾讯的libco自己用汇编实现了swapcontext函数,不明觉厉(libtask也有ASM)。而且把epoll整合在了里面。
微信后台就用到了它.在chinaunix.net上的一个帖子中就说到了这个。...
分类:
其他好文 时间:
2014-10-13 18:19:57
阅读次数:
213
最近想看看协程,对这个的具体实现不太了解,查了下,协程最常规的做法就是基于makecontext,getcontext,swapcontext这类函数在用户空间切换用户上下文。
所以在这通过例子代码尽量把context相关的函数弄清楚先。
#include
#include
#include
static ucontext_t uctx_main, uctx_func1, uctx_f...
分类:
其他好文 时间:
2014-10-10 00:18:28
阅读次数:
324
一、coroutine.create创建协程
参数是协程的主函数,返回一个thread对象
co = coroutine.create(function()
print("coroutine execute!")
end)
二 协程状态
协程有4种状态:挂起(suspended)、运行(running)、死亡(dead)和正常(normal)
coroutine.status(co)...
分类:
其他好文 时间:
2014-10-08 17:13:35
阅读次数:
290
协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程,而协程是通过协作来完成,任何时刻只有一个协程程序在运行。并且这个在运行的协程只有明确被要求挂起时才会被挂起
你可以使用coroutine.create来创建协程:
co = coroutine.c...
分类:
其他好文 时间:
2014-10-06 01:28:19
阅读次数:
336
协程是协同程序的简称,顾名思义,就是协同工作的程序。协程拥有自己独立的桟、局部变量和PC计数器,同时又与其他协同程序共享全局变量和其他大部分东西;
协程与线程的主要区别在于,一个多线程程序可以同时运行几个线程(并发执行、抢占),而协同程序却需要彼此协作地运行,即一个多协程程序在任意时刻只能运行一个协程,并且正在执行的协程只会在其显式地要求挂起(suspend)时,它的执行才会暂停(无抢占...
分类:
其他好文 时间:
2014-09-21 17:21:01
阅读次数:
232