值得专门一本小书,单说 cosoket 毕竟这是最核心的原创概念和应用技巧..
2016-03-14 5:53 GMT-05:00 YuanSheng Wang <yuan...@openresty.org>:
> 要讲明白 cosocket ,需要把 nginx 的事件循环、lua 协程的唤醒联合起来,起点还是比较高的。
>
> 懂了 cosocket 机理,至少可以帮助大家正确理解异步非阻塞的最典型底层用例了。
>
> 2016-03-14 18:36 GMT+08:00 DeJiang Zhu <douj...@gmail.com>:
>>
>> Hello,
>>
>> 谈谈我的理解,nginx 是一个巨大的事件循环器
>>
>> 比如,tcpsock:send,可以在 ngx_lua 看到这些
>>
>> 1. 使用非阻塞的方式调用 send
>> 2. kernel 写不动的会返回 EAGAIN
>> 3. 可写事件进入事件队列
>> 4. 将当前的协程挂起
>>
>> 1. fd 有可写事件的时候,调用 event 对应的 handler 来处理
>> 2. handler 继续非阻塞发送,如果 EAGAIN 继续 等可写事件
>> 3. 如果发送完毕,唤起对应的协程
>> 4. 或者写超时,也唤起对应的协程
>>
>>
>>
>> 在 2016年3月11日 下午3:49,ch ren <fin...@gmail.com>写道:
>>>
>>>
>>> nginx在linux上是采用的epoll做事件轮询,cosocket能够保证异步的套接字操作,这个cosocket的原理是什么,该怎么理解它,还有ngx_lua_module是怎么讲lua的coroutine和nginx内部的epoll结合起来的?
>>>
>>> 谢谢!!
>>>
>>> --
>>> --
>> --
>
> YuanSheng Wang
> ---------------------------------------
> My Github: https://github.com/membphis
> OpenResty lover ^_^
>
> --
> --
Life's Pathetic, Let's Pythonic! 人生苦短, Python是岸!
俺: http://zoomquiet.io
授: http://creativecommons.org/licenses/by-sa/2.5/cn/
怒: 冗余不做,日子甭过!备份不做,十恶不赦!
KM keep growing environment culture which promoting organization be learnning!