回答
簡單的事情是讀一點。以下列表包含一些需要查看和研究的內容。
- 花時間閱讀的Open Group Base Specification特別是General Information部分和subsection on threads。這是大多數UN * X類似系統下多線程的基本信息。
- 學習difference between a mutex and a semaphore
- 要認識到,共享MUST來保護這一切。這適用於全局變量,
static
變量以及任何共享的動態分配的內存。 - 將全局狀態標誌替換爲condition variables。這些使用
pthread_cond_init
和相關功能來實現。
一旦你瞭解的基礎知識,瞭解常見的問題,這樣,當它們出現,你可以識別它們:
- Lock inversion deadlocks
- Priority inversion - 如果你有興趣在一個真實的生活場景,那麼read this snippet about the Mars Pathfinder
哇,我基本上沒有聽說過你在這裏列出的任何東西!開始閱讀。 – bodacydo 2010-06-27 18:20:10
這裏有很多信息。如果你想要更多的書籍,請在https://computing.llnl.gov/tutorials/pthreads/閱讀或購買「UNIX系統編程」(http://www.amazon.com/UNIX-Systems-Programming) - 通信併發/ DP/0130424110 /) – 2010-06-29 02:33:32
它真的歸結爲共享狀態,全局變量和靜態本地都是共享狀態的例子。如果你不分享國家,你就不會有問題。共享狀態的其他示例包括寫入文件或套接字的多個線程。
任何共享資源將需要妥善管理 - 這可能意味着使互斥鎖受到保護,打開另一個文件或智能地序列化請求。
如果兩個線程正在從同一個結構中讀寫,那麼您需要處理這種情況。
謹防sem_t
函數,它們可能會返回未完成的中斷,IO,SIGCHLD等。如果您需要它們,請務必allways捕獲該情況。
pthread_mut_t
和pthread_cond_t
功能相對於EINTR
是安全的。
一個很好的關於併發性的一般書可以在這裏找到:Little Book of Semaphores
它提出了一步一步解決的各種問題,包括常見併發問題的解決方案,如飢餓,競爭條件等。 它不是語言特定的,但包含有關使用Pthread-Library或Python實現C中解決方案的簡短章節。
- 1. 編寫線程安全的載體
- 2. C++多線程 - 線程安全代碼
- 3. 確保代碼中的線程安全
- 4. 這是線程安全的代碼?
- 5. 如何爲我的代碼提供線程安全性?
- 6. 是EventLog編寫器線程安全
- 7. 如何在.NET中編寫安全/正確的多線程代碼?
- 8. 解決安全漏洞在「編寫安全代碼」'
- 9. 以下代碼是否線程安全
- 10. 這段代碼是否線程安全?
- 11. 這段代碼線程安全
- 12. 關於產品線程安全代碼
- 13. 該代碼是否線程安全?
- 14. 代碼重入與線程安全
- 15. 這段Java代碼線程安全嗎?
- 16. 線程安全編程
- 17. 這種編碼線程是否安全,死鎖安全?
- 18. 此代碼是否線程安全?我怎樣才能使它線程安全?
- 19. 如何編寫密碼安全的類?
- 20. 編寫同步線程安全的包裝器的NavigableMap
- 21. 寫這個是線程安全的嗎?
- 22. 提高JavaScript代碼編寫的一些提示
- 23. F#事件的線程安全提升
- 24. 這是python代碼線程安全(線程與扭曲)?
- 25. 爲非線程安全代碼構建工作線程池
- 26. 線程是否表示線程安全?
- 27. 你如何編寫對UTF-8安全的代碼?
- 28. 如何編寫線程安全的方法?
- 29. java線程安全:線程安全嗎?
- 30. 線程安全的
請標記投票問題的社區wiki'。 – danben 2010-06-27 14:23:18
danben,完成。 s – bodacydo 2010-06-27 14:23:47