LinuxDev 板


LINE

第一次在板上詢問...小的是linux系統程式的生手 最近在寫proxy server碰到timer的問題: 我的需求是有一台proxy server (以下簡稱ps) ps 會開 n 個 thread 去處理 "每個不同的client 對固定server 的連線(send跟recv)" 圖解: client --> proxy --> server <-- <-- 每個thread的特性就是,需要計時器去計時 每個client透過ps連到server有一段時間限制 (並不是處理完就關閉) 我目前有找到一些方法: 1. 針對單一thread: time.h裡面有內建,使用的是定期傳送signal(alarm)看是否過期 2. 狂耗CPU資源的方法: 就是隨時都檢查有沒有過期 3. pthread_cond_init(): 這方法也是會面臨main thread很吃資源的問題 4. glib提供的g_timeout_source_new(): 支援multithread,但程式碼要砍掉重練 如果要盡量省CPU資源,多久檢查檢查的時間內都不會吃CPU 請問有更好的方法嗎? 不然應該只能採用glib了 先謝謝板友 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.2.247 ※ 編輯: note35 來自: 140.115.2.247 (08/14 14:10)
1F:推 yvb:不知使用 epoll 或 libevent 如何? 08/14 22:01
我原先是使用epoll下去實作,但發現一些問題才改變做法 後來另外一組人馬有用poll把他實做出來,我才發現原來poll有辦法做到
2F:推 tseng1129:timer_create - create a POSIX per-process timer 08/15 00:17
這個我沒嘗試過@@,會再去搜尋看看
3F:推 dou0228:推 libevent 08/15 21:38
4F:推 yvb:忽然想到, 3 為何很吃資源? 是因為套用 2 在 main thread 嗎? 08/16 20:34
5F:→ 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)
6F:推 yvb:libev 和 libevent 是兩套不同的 library... 08/30 21:27
7F:→ yvb:使用 select/poll/epoll 基本原理都是 asynchronous 的方式, 08/30 21:28
8F:→ yvb:但在很多 FDs 和 Threads 的情況下, epoll 較佳... 08/30 21:29
9F:推 yvb:另外, 即使用 busy waiting 的方式, 還是可以適當加入一些 08/30 21:33
10F:→ yvb:條件做 usleep() 來避免狂吃資源... 08/30 21:34
11F:→ yvb:比方non-blocking read沒東西就慢慢加大usleep直到某上限之類. 08/30 21:36
12F:→ yvb:read 的到東西就不需做 usleep() ... 08/30 21:37
13F:→ yvb:另外, 不知您 "用「共用變數」的方式" 是怎樣的方式?? 08/30 21:38







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP