多線程很難。你唯一能做的就是非常小心地編程,並遵循好的建議。我從這個論壇的答案中得到的一個很好的建議是避免可變狀態。我知道這甚至在Erlang語言中被強制執行。然而,我沒有看到如何在沒有嚴重的性能命中和大量緩存的情況下完成這項工作。如何避免可變狀態(多線程時)
例如。你有一個很大的對象列表,每個對象都包含很多屬性;換句話說:一個龐大的數據結構。假設你有一堆線程,他們都需要訪問和修改列表。 如何在不共享內存的情況下完成而不必緩存每個線程中的整個數據結構?
更新:在閱讀了迄今爲止的反應之後,我想再強調一下的性能。你不認爲複製相同的數據會使程序比共享內存慢嗎?
不要認爲你的程序應該是多線程的,並且如果你想讓它分佈式的話? Datastruct複製在這裏是一個很大的勝利。 – akappa 2009-06-29 09:45:45
你說得對。在我們的應用程序中,用戶界面被分成一個通過TCP連接的瘦客戶機。我們將相當大一部分數據緩存在UI端。結果是更多的代碼和更復雜的程序。 – 2009-06-29 10:02:01