作者csihcs (非天夜翔)
看板java
標題[問題] 網路程式 wait to read client msg
時間Fri Feb 12 13:43:30 2010
前言:
想要寫個網路遊戲,其中 server & client 都是自行開發,
連線方面採用 TCP 通訊。
目前的進度是:
server 只要在 client 連線就建立一個 Thread 與 client 作互動,
但是在 client 沒有任何 input 的話, Thread 就會一直等候 message。
目標:
想要由一個 Thread 處理多個連線傳入的訊息,
因為如果連線量多的話, Thread 會建立非常多個,
會造成 server 過度的負荷,甚自因此 crash,
因此想以上述的目標改進這個缺陷,
想請教的是:
如何讓 Thread A 在限定等候訊息的時間,比方說等候 250 ms,
在沒有訊息傳入時,切換到另一個連線為他服務,
循環性的讀取(A→B→C→D→A→B....),
當讀取到訊息時,會交由其他 Thread (not A)處理,
而 A 繼續做讀取的動作。
謝謝各位大大認真的看完,感謝。
謝謝指教。 m(_@_)m
--
"
愛 "是"
喜歡"的累積!
"
喜歡"是"
感覺"的累積!
"
感覺"是"
緣份"的累積!
"
緣份"是"
前世"的累積!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.9.2
1F:→ TonyQ:就是working queue啊 , 不過相對的等待也要比較久... 02/12 13:50
2F:推 qrtt1:要不要直接改 non blocking socket 比較快 :P 02/12 14:41
3F:→ csihcs:T大可以說明白一點嗎???不是很懂說QQ" 02/12 14:55
4F:→ csihcs:q大你是只用 UDP ??? 02/12 14:56
5F:→ sbrhsieh:NIO, channel, selector 02/12 16:31
6F:→ slalala:我之前的寫法是傻傻的寫一個timer client0.5秒自動斷線 02/12 17:57
7F:→ csihcs:謝謝 sb 大提供的意見,我朝這個方向試試看。 02/12 21:28
8F:→ csihcs:sl大,因為我需要 client 保持連線狀態,所以沒法適用,thx 02/12 21:45
9F:→ qrtt1:為什麼你覺得我只用 UDP !? 02/12 21:59
10F:推 slalala:q大請開釋一下吧 想對這議題多點了解 lmgtfy不到結果(羞) 02/12 22:34
12F:→ csihcs:q大抱歉誤會了,原本是要打"是指用UDP"結果沒注意到打錯字 02/13 01:25
13F:→ csihcs:謝謝 q 大提供的意見,我也會在這個地方試試看。 m(_@_)m 02/13 01:37
14F:→ qrtt1:囧, 別再大來再去了. 只是剛 好寫過罷了.. 02/13 09:39
15F:推 Yshuan:要做同步協調呀 @@~ 之前做專題只草草的限制連線數而已... 02/13 17:18