我理解的同步非阻塞
2020-07-29 本文已影响0人
抟九
同步/异步,阻塞/非阻塞是完全不一样的概念,但容易混淆。
local res, err = query-mysql(sql)
local value, err = query-redis(key)
如果需要等待mysql的查询返回,才能继续redis查询,那该操作就是同步的,否则就是异步的。
如果在等待查询返回的过程中,没有让出cpu资源,而是占用资源的等着,那操作就是阻塞的,如果进程趁机去处理其他事件,那操作就是非阻塞的。
所以,所谓同步非阻塞,就是一个操作是按序执行,但在等待返回的过程中又不浪费资源。
是事件驱动的,所以就兼具编程简单和程序效率高两个优点。