Win32多線程之同步控制

    寫多線程程序的一個最具挑戰性的問題就是,如何讓一個線程和另一個線程合作。除非你讓它們同心協力。否則必然會出現“race conditions”(競爭條件)和“data corrupton”(數據被破壞)的情況。

    在典型的辦公室文化中,協調工作是由管理者來執行的。類似的解決方案,也就是“讓某個線程成爲大家的老闆”。當然可以在軟件中實現出來,但是每逢它們需要指揮時,就要它們排隊等待,其實有着嚴重的缺點,通常那會使得隊伍又長又慢。這對於一個高效率的電算系統而言,實在不是一個有用的解決方案。

   Win32中關於進程和線程的協調工作是由同步 機制來完成的。同步機制相當於線程之間的紅綠燈。你可以設計讓一組線程使用同一個系統。這個紅綠燈系統負責給某個線程綠燈而給其他線程紅燈。這組紅綠燈系統必須確保每一個線程都有機會獲得綠燈。

  有多種同步機制可以運用。使用哪一種則完全視欲解決的問題而定。當我討論每一種同步機制時,我會說明“何時”以及“爲什麼”應該使用它。

  這些同步機制常常以各種方式組合在一起,而產生出更精密的機制。如果你把那些基本的同步機制視爲建築物的小件組塊,你就能夠設計出更適合你的特殊同步機制。

  

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章