線程是否有可能在同一進程中共享數據(全局變量)。C# - 多線程 - 共享數據
0
A
回答
5
2
當然是了。你只需要同步它們以避免死鎖。在C#中使用lock
來標記代碼中的關鍵部分。查看MSDN瞭解詳細信息。 :-)
0
是的。可能需要更多信息。
Object o = new Object();
int i; // Shared variable
lock(o)
{
// work with i.
}
1
相同程序中的多個線程可能共享數據。但是,您必須瞭解數據訪問和寫入的潛在問題。通常情況下,這會在編寫時讀取或嘗試訪問相同資源時出現問題。 [查看更多about race condictions]
1
是的,無論是通過引用靜態對象,公然提供跨線程的引用,還是跨線程封送(例如,UI控件調用/調度調用,儘管這不完全相同)。
雖然跨線程共享資源的同步是絕對重要的,但簡單地提倡將鎖(對象)作爲一攬子方法並不一定適用於所有情況。如果你有兩個線程被鎖定在另一個線程正在等待的共享對象上,你將會陷入僵局,因此必須考慮設計和處理流程。
除非必要,否則也不要鎖定整個類,否則可能會產生不必要的開銷並導致性能損失。對於需要同步的靜態類,最好提供一個靜態對象來鎖定與共享狀態交互的方法,而不是鎖定整個類: lock(_staticLockObjectInstance)over lock(typeof(staticClass))
1
0
同一進程中線程的默認行爲是共享全局存儲。
如果你不想共享存儲,那麼環境提供thread local storage。
如果您訪問共享存儲,那麼您可能需要使用鎖定,原子操作或內存隔離來同步對存儲的訪問。如果你忘記在代碼的任何部分這樣做,它可能會以不可預知的方式失敗。
相關問題
- 1. C#線程共享數據
- 2. 多線程 - 共享數據
- 3. C++ - 在線程之間共享數據
- 4. 在C++中共享數據的線程
- 5. C#與多線程共享鎖
- 6. java之間共享數據線程
- 7. Java:線程共享數據的框架
- 8. Java線程不共享靜態數據
- 9. 由一個線程與其他線程數組共享數據
- 10. C++,如何在進程或線程之間共享數據
- 11. 在線數據共享
- 12. 在線程之間共享數據數組-C++
- 13. 與多個python程序共享數據
- 14. 多個線程之間的數據共享(班級)
- 15. 在多線程中共享數據 - 是非靜態變量嗎?
- 16. 多線程共享/訪問相同數據的問題
- 17. 在java中的多線程共享數據
- 18. 在JAVA多線程中共享相同的數據區域?
- 19. PageContext線程共享
- 20. 多線程共享本地變量
- 21. 堆被共享到多個線程嗎?
- 22. 共享列表上的多線程
- 23. OpenMP共享數據
- 24. 數據共享
- 25. 使用c鎖共享數據#
- 26. 共享數據
- 27. 共享數據
- 28. 共享數據
- 29. C++ - 使用多進程共享內存
- 30. 定時器多線程數組共享一個函數問題
分享如何?全局變量,共享內存或其他方法?你可能想要進一步解釋。 – 2009-11-27 03:37:55
另外,我假設你是指在同一個進程中的線程,對吧? – CesarGon 2009-11-27 03:39:02