推 yvb:不知使用 epoll 或 libevent 如何? 08/14 22:01
我原先是使用epoll下去實作,但發現一些問題才改變做法
後來另外一組人馬有用poll把他實做出來,我才發現原來poll有辦法做到
推 tseng1129:timer_create - create a POSIX per-process timer 08/15 00:17
這個我沒嘗試過@@,會再去搜尋看看
推 dou0228:推 libevent 08/15 21:38
推 yvb:忽然想到, 3 為何很吃資源? 是因為套用 2 在 main thread 嗎? 08/16 20:34
→ yvb:然後, 2 是在 thread 用 non-blocking 嗎? 08/16 20:40
我是打算讓non-blocking跟blocking的方式都能運作
3的部分,誠如你所說,會在main thread上吃到CPU 100%
後來我的解決方法是用「共用變數」的方式去解決的
我拿成品交出去的時候,被對方認為這是種很奇妙的思維...
poll已經足夠支援我的需求,這點也算長了一些知識
另外補充
libev其實就是涵蓋了epoll(for linux)跟BSD自己的另一套poll函式庫
使用libev也就能同時支援兩個系統。
※ 編輯: note35 來自: 140.115.2.247 (08/22 19:02)
推 yvb:libev 和 libevent 是兩套不同的 library... 08/30 21:27
→ yvb:使用 select/poll/epoll 基本原理都是 asynchronous 的方式, 08/30 21:28
→ yvb:但在很多 FDs 和 Threads 的情況下, epoll 較佳... 08/30 21:29
推 yvb:另外, 即使用 busy waiting 的方式, 還是可以適當加入一些 08/30 21:33
→ yvb:條件做 usleep() 來避免狂吃資源... 08/30 21:34
→ yvb:比方non-blocking read沒東西就慢慢加大usleep直到某上限之類. 08/30 21:36
→ yvb:read 的到東西就不需做 usleep() ... 08/30 21:37
→ yvb:另外, 不知您 "用「共用變數」的方式" 是怎樣的方式?? 08/30 21:38