[閒聊] thread-safe

作者: cowbaying (是在靠北喔)   2015-06-29 00:16:21
出來緩和一下氣氛(被巴...
注意到最近的遊戲開發工具
較有名如GMS、UNITY或是COCOS-2D
會發現基本上就是只支援單執行緒
其實我覺得沒什麼不好
畢竟在變數的共用上
如果發生同時存取或者該值應該存在而竟然不存在或者反過來的時候
Thread-Safe的觀念就很重要
不過當然這幾個工具都有支援multi-core的外掛或模組
在單純使用Java開發Android遊戲的情況中
還有synchronized這個關鍵字可以用
事實上這個關鍵字還是少用比較好
因為書上都這麼說?
不是的
因為這在設計不良的架構裡會嚴重拖累到效能
說到這裡
整個遊戲的邏輯設計就顯得非常重要
當迴圈在循環的時候(跑一次迴圈暫時定義成一個cycle)
因為會考慮到效能問題
子物件有不同處理資料的cycle
但是這樣就成了一個問題
哪個要先執行?(當cycle數到了公倍數的時候)
這點在GMS或UNITY這類工具上
就必須注意物件執行的順序
不然縱使程式碼寫對
但程式還是會出錯
雖然遊戲開發工具很便利
但是該有的邏輯一樣是不可少的
作者: azureblaze (AzureBlaze)   2015-06-29 00:26:00
MT開發除錯很麻煩,所以這些非超專業的工具都會避免吧當然那種得搾出每一滴效能的就會進去打混戰了
作者: cowbaying (是在靠北喔)   2015-06-29 00:27:00
是阿 不過還是可以用簡單的狀態改變去做同步的記號
作者: hodsala (猴的沙拉)   2015-06-29 10:24:00
何謂支援? cocos2dx本身不就使用了多緒載圖 只是可以選擇不用
作者: LaPass (LaPass)   2015-06-29 10:53:00
我覺得MT比較好用,不過開架構時要有MT的知識,不然一定死
作者: cowbaying (是在靠北喔)   2015-06-29 11:23:00
用MT跟在寫parallel程式一樣阿...
作者: littleshan (我要加入劍道社!)   2015-06-30 01:24:00
現在的主流程式語言在設計上就是不利MT的所以大家就會覺得寫MT很麻煩,實際上是用錯了工具就像沒有cuda/opencl的時代雖然還是可以寫gpgpu但是工具不對,怎麼寫都很麻煩又容易出錯
作者: cowbaying (是在靠北喔)   2015-06-30 09:24:00
有專門的工具? 哪一套分享一下
作者: dreamnook (亞龍)   2015-06-30 09:32:00
+1

Links booklink

Contact Us: admin [ a t ] ucptt.com