最後,我們可以全力以赴,重寫不安全的函數,讓它重新進入,如圖11.28。註意,被調用的線程現在通過地址點的責任擁有獨占數據。
即使我們試圖使我們的角色安全,我們的程序仍然可能遭受微妙的同步錯誤,如競爭和死鎖。當我們談到線程網絡服務系統時,我們將在12章中使用類似的技術。
線程是在程序中引入並發性的壹個通用且有用的工具。線程通常比進程更高效,並且在線程之間共享數據比在進程之間共享數據更容易。但是舒適共享引入同步錯誤的可能性很難診斷。
程序員文本線程程序必須小心保護與適當的同步機制共享的數據。穿線壹定是安全的。必須避免競爭和僵局。總之,明智的程序員會小心翼翼地處理線程程序,不會有絲毫驚慌。