首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
关于dispatch_mode=3抢占模式的疑问。
我看代码分配worker进程id的时候,我先获得workerid 判断如果空闲就返回了。 那如果遍历完每个worker 都busy target_worker_id 还是0啊。 {{{ else { int i; for (i = 0; i < serv->worker_num + 1; i++) { target_worker_id = sw_atomic_fetch_add(&serv->worker_round_id, 1) % serv->worker_num; if (serv->workers[target_worker_id].status == SW_WORKER_IDLE) { break; } } //swWarn("schedule=%d|round=%d\n", target_worker_id, *round); } }}}
发布于8年前 · 4 次浏览 · 来自
提问
s
shi
我看代码分配worker进程id的时候,我先获得workerid 判断如果空闲就返回了。 那如果遍历完每个worker 都busy target_worker_id 还是0啊。 {{{ else { int i; for (i = 0; i < serv->worker_num + 1; i++) { target_worker_id = sw_atomic_fetch_add(&serv->worker_round_id, 1) % serv->worker_num; if (serv->workers[target_worker_id].status == SW_WORKER_IDLE) { break; } } //swWarn("schedule=%d|round=%d\n", target_worker_id, *round); } }}}
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2018-03-28
_
____2020/dx
这里是是 n+1 次,所以不是0
赞
0
回复
2018-03-29
c
coderchc
我理解了,就算都是忙的 找了一圈回来再找第一次 取模的那个work. 只是那个worker_round_id 每次都在 +1.
赞
0
回复