-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
workflow 能否用 poll 替换 epoll 实现 (嵌入式) #478
Comments
你好,我们先了解一下这个平台。这个是某种unix平台吗?poll的话应该可以改,毕竟现在kqueue和epoll都支持了。我一会看看。 |
QNX是遵从POSIX规范的类Unix硬实时操作系统。这是一个商业版的操作系统。 |
其它的都没有什么,但现在有个小问题,我们需要依赖linux的timer_fd或kqueue的timer。posix标准的话,我们得看看有什么可以代替。 |
这是一份qnx开发手册,可以查询qnx支持那些API: http://www.qnx.com/developers/docs/7.1/index.html |
我看看这个文档。也麻烦您向嵌入式圈子扩散一下我们这个框架。 |
好的,workflow 工作流的设计思想十分赞,正在借鉴使用。 |
目前有什么进展不? |
还没有……主要还是timer的问题。我想做个posix版,但现在严重依赖timerfd。posix下timerfd不知道怎么代替。 |
好的,我这边也在看看,我之前已经尝试修改过代码,遇到的问题和你一样,就是 poll 怎么监测 fd 和 timefd的问题有点棘手。 |
问一下,现在支持 https 协议吗? README中未看到标注。 |
支持的呀。我们很多例子都是https的URL。server的话,有个启动接口可以传证书文件路径的。传了就是https server。 |
Hi,请问一下,使用HttpServer,如何设置支持跨域访问? |
不太清楚什么是跨域访问……我们的http_server,基本就是把所以信息都给到用户,用户在这个基础上再做二次封装。同一个server支持多个Host肯定是没问题的。 |
我发现我们的模式和其他one loop per thread的框架不一样。我们的模式下一个线程在epoll_wait,另一个线程向epoll里添加,删除或修改fd是常规操作。epoll和kqueue都支持这个特征,但poll就做不到了。这也是为什么我们不好用poll来实现目前的poller接口。 |
muduo也是使用的 one loop per thread,muduo以高性能著称,应该在高并发的性能上不会有太大的问题的。 |
目前posix(poll)版本已经有一定进展,可以不用timer_fd,定时精度也不会有太大影响,可以到毫秒级。但性能上会比epoll差一些。 |
好的,十分感谢。 |
muduo通过eventfd打断epoll_wait来添加fd。在一些场景下肯定会影响性能。 |
小建议: |
我之前就是这么做的,但没有实现完代码给删了。当时肯定是对代码实现不满意。因为poll和epoll/kqueue的用法区别上实在太大,不能多线程操作,我们的poller极度依赖于线程安全,必须可以多线程并发操作。如果我还只保留一个poller.c文件,需要加入很多ifdef,这个不能接受。只能独立出来一个新的poller实现,这样又有很多重复代码。大家有兴趣可以用poll来实现现在poller的语义试试。 |
将 workflow 移植到 qnx 平台,因 qnx 平台没有 epoll,打算改用 poll 替换 epoll,或者有更好的方案?正在阅读源码过程中,能否给予一些建议帮助?
The text was updated successfully, but these errors were encountered: