首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
swoole 的定时器形态是什么
###我想为我项目中的大量的轮询任务选一种资源利用更合理的方式 请问:swoole 的定时器形态是什么(线程?) 他的资源是线程级还是进程级呢? 我在想我的裸写项目中的timer要不要改成 `协程方式`(项目启动后的轮询任务) go(function(){while(true){}}) 我自己的理解: 是不是可以这样理解 ,timer 是基于某种事件调度机制,将定义的信息存在某个空间里,然后用进程、协程的方式来开启和执行 我想从概念上知道,定时器是不是也是一个线程在运行,还是说他是一个独立的运行空间,不是线程,也不是进程。 以及他抢cpu时间片的方式是什么。
发布于5年前 · 6 次浏览 · 来自
提问
zxyfaxcn
###我想为我项目中的大量的轮询任务选一种资源利用更合理的方式 请问:swoole 的定时器形态是什么(线程?) 他的资源是线程级还是进程级呢? 我在想我的裸写项目中的timer要不要改成 `协程方式`(项目启动后的轮询任务) go(function(){while(true){}}) 我自己的理解: 是不是可以这样理解 ,timer 是基于某种事件调度机制,将定义的信息存在某个空间里,然后用进程、协程的方式来开启和执行 我想从概念上知道,定时器是不是也是一个线程在运行,还是说他是一个独立的运行空间,不是线程,也不是进程。 以及他抢cpu时间片的方式是什么。
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2021-05-11
Rango
定时器只是一个内存数据结构
赞
1
回复
2021-05-10
zxyfaxcn
因为此项目上还有HTTP服务,所以想知道定时器的运行与worker 进程的资源利用上是一个什么关系。
赞
0
回复
2021-05-11
序冢
协程其实也是基于epoll,swoole的定时器也是timerfd,具体可以看linux的glibc的timerfd,这个描述符其实是一个struct file 结构体,具备内核中常见的函数功能,比如说open、close、当然也具有poll功能。这是一个十分优秀的方法,巧妙避免了函数可重入的问题,之前的定时器好多基于闹钟信号,处理可重入问题一直是关注的重点,当使用timerfd你就不需要再关注这个了,因为它不是异步的.   具体可以看linux设备驱动,每个fd其实内核都是用struct file 去维护的
赞
0
回复
2021-05-11
zxyfaxcn
定时间器与worker工作线程之间的资源调度是什么关系呢? 如果将定时器改为协程while(true)的方式会不会更好,为什么?
赞
0
回复
2021-05-11
序冢
回复
zxyfaxcn
都差不多,变着花样的eventloop+callback,看使用场景
赞
0
回复
2021-05-12
zxyfaxcn
嗯,多谢作答 操作系统知识不扎实,补习去了。
赞
0
回复