[問題] Thread 數量 的評估

作者: noapaov (單身漢)   2015-06-29 00:31:23
最近在實作一個遊戲app, 看了一些文章, 有的建議提供執行緒的數量,
有的則建議適量即可, multi - Thread的主要目的是提高CPU的使用率,
但實在有點不太清楚一個伺服器端的程式到底要建立多少個執行緒 ? 假設我有5個功能
EX : 登入 、 聊天 、 發信 、 金流 、 遊戲戰爭運算~
啟動越多 Threads , 相對的管理成本與記憶體的負擔也就比較大, 如果以我上述的例子 ~
我需要啟動5個以上的Thread來處理嗎?
一般都以什麼方法來判定要開啟幾個thread的?
謝謝 ~
作者: fireslayer (fireslayer)   2015-06-29 01:48:00
五個還好吧,然後越多thread就要越小心同步的問題
作者: cowbaying (是在靠北喔)   2015-06-29 02:36:00
不單是看數量 你要看之間有沒有共用的資料注意thread-safe
作者: AmosYang (泛用人型編碼器)   2015-06-29 04:02:00
我的舊文 #1Bj6ZTjD 有稍微提到這個
作者: Killercat (殺人貓™)   2015-06-29 05:33:00
thread用功能來分來做profiling的話,非常危險五個thread的peak,heap等等完全不一樣只能說這是一種很粗略地分法,但是不能當作profiling的準則,這SA的太少資源切割(防peak)的也太粗略正確的分法是profiling找出gap 把gap thread化並且避免過多的gap集中在一起造成peak不過講真的啦,通常就開個thread pool, pool大小就cpu*2,這大概是經驗上來講比較可行的試法了
作者: noapaov (單身漢)   2015-06-29 14:05:00
我看一般聊天室的功能, 一個Client就會開啟一個Thread也就是如果有1000個玩家就會產生1000個Thread斷線的時後可能在關閉Thread或把Thread丟回Pool之類的不支到大家對這樣的作法有時麼意見呢?
作者: AmosYang (泛用人型編碼器)   2015-06-29 17:21:00
如果不需考量 scalability 的話, 能動不會crash就好 :D
作者: kojilin (阿~~小達達)   2015-06-30 10:34:00
基本上大家連上線也沒頻繁在動作的,就不用那麼多thread
作者: noapaov (單身漢)   2015-06-30 11:20:00
是沒錯 ~ 雖然沒使用, 但是thread 還是會佔用著一些資源
作者: popcorny (畢業了..@@")   2015-06-30 13:16:00
沒什麼大問題。在往上會有點困難,但是初期好寫比較重要

Links booklink

Contact Us: admin [ a t ] ucptt.com