作者的回答是排队执行,第一个的请求没有响应完不会去处理第二个请求的请求,假如第一个请求里没有同步io也是排队执行吗?
https://www.workerman.net/q/12186 这个问题的下面的回答说可以在第一个请求没有响应前处理第二个请求 有点搞不明白,还是说进程是因为第一个请求有同步io的逻辑才使得进程阻塞无法去处理第二个请求? 假如不使用同步io的函数阻塞进程,是不是可以使得一个进程并发执行多个请求的业务逻辑?
没有同步阻塞IO就是并发执行
我觉得在单worker进程下,也不考虑协程就是老版本workerman,无论onMessage里有没有阻塞io,上一个请求的onMessage里的业务代码还没执行完,应该都是没法处理下一个请求的,单wokrer进程里只有单线程呀。
个人理解,单进程里单线程情况下,worker进程里唯一的那个线程不是在事件循环里等待新请求,就是在onMessage里处理请求,在事件循环里一旦有新请求,马上就能去onMessage。但是这个请求的onMessage执行的过程中有新请求,让线程半途而废回到事件循环里处理新请求,我觉得办不到。
可以实验一下,onMessage里写一段会运行好几秒的一大段非阻塞代码,看看到底行不行。
没有同步阻塞IO就是并发执行
我觉得在单worker进程下,也不考虑协程就是老版本workerman,无论onMessage里有没有阻塞io,上一个请求的onMessage里的业务代码还没执行完,应该都是没法处理下一个请求的,单wokrer进程里只有单线程呀。
个人理解,单进程里单线程情况下,worker进程里唯一的那个线程不是在事件循环里等待新请求,就是在onMessage里处理请求,在事件循环里一旦有新请求,马上就能去onMessage。但是这个请求的onMessage执行的过程中有新请求,让线程半途而废回到事件循环里处理新请求,我觉得办不到。
可以实验一下,onMessage里写一段会运行好几秒的一大段非阻塞代码,看看到底行不行。