我有用C#編寫的應用程序,雖然任何類似的語言都適用於此。多線程最佳實踐
應用程序有繪製圖形場景到的窗口基於數據的實時接收通過各種UDP和TCP套接字窗體上的工作。每個UDP和TCP連接使用它自己的線程:這些線程各自修改內存中的各種對象,從而修改圖形顯示。我也有一個用戶界面線程,它能夠接收用戶事件(按鈕點擊等),然後修改這些相同的對象和顯示。最後,我還有很多定時器,我會啓動它們自己的線程來修改這些相同的對象和顯示。
在存儲器正在修改的目的由約15種不同的類。
一切工作非常可靠,但是所有這些不同類別的被不同的線程修改,我不得不添加了很多同步鎖。我不得不逐個查看每個類,以確定哪個內存可能被多個線程修改。
這似乎很容易在這種情況下錯過這些景點之一:忘記的地方加上同步它的需要。
我很好奇,別人是否會實現這個我做的方式,或者,如果有一些更優雅的方式:也許在某種程度上將所有A類的修飾對自己的線程或東西嗎?
(PS我很害怕在第一次事情沒有那麼好之後問一個問題,但我不認爲我的問題在這裏顯得非常明顯,所以我希望你不會o)
感謝這麼多強勁的答案。這是一個非常好的話題討論。 – vmayer