多線程編程的簡單介紹

API函數CreateThread可以用來創建一個線程。以下是函數的原型

 

在創建線程之後,需要線程來執行某些工作,這時候,執行的工作就交給上述的第三個參數 線程的函數來實現

線程函數的定義形勢如下:

 

線程函數中的參數也就是創建進程函數中的第四個參數。

 

在創建線程時,就直接把參數傳給線程函數了。

 

下面的一個例子來示例下線程的工作過程

 

 

 

其實很簡單,就通過線程函數創建線程之後,再實現線程函數,就可以工作了。

 

----------------------------------------------------------

 

在多線程程序的執行過程中,多個線程會訪問同一塊數據,臨街資源。爲了避免他們同時訪問,造成不確定的影響,需要將臨街資源進行保護。完成這個過程就叫做線程同步。

 

我們可以用創建互斥對象來實現之

 

互斥資源的創建函數CreateMutex

 

 

 

具體的實現請看下面的例子:

 

 

 

-------------------------------------

 

線程同步的方法除了互斥資源,還有其他的方法。其原理和方式都差不多。

 

 

線程的同步的時候,會調用一些方法來造成其他的線程進行等待。其實這裏面也有隱患的。那就是由於某種原因,一直等待下去,造成死鎖。

要避免死鎖,就需要養成良好的編程規範,同時在設計上讓程序合理。

 

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