[问题] 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