API函數CreateThread可以用來創建一個線程。以下是函數的原型
在創建線程之後,需要線程來執行某些工作,這時候,執行的工作就交給上述的第三個參數 線程的函數來實現
線程函數的定義形勢如下:
線程函數中的參數也就是創建進程函數中的第四個參數。
在創建線程時,就直接把參數傳給線程函數了。
下面的一個例子來示例下線程的工作過程
其實很簡單,就通過線程函數創建線程之後,再實現線程函數,就可以工作了。
----------------------------------------------------------
在多線程程序的執行過程中,多個線程會訪問同一塊數據,臨街資源。爲了避免他們同時訪問,造成不確定的影響,需要將臨街資源進行保護。完成這個過程就叫做線程同步。
我們可以用創建互斥對象來實現之
互斥資源的創建函數CreateMutex
具體的實現請看下面的例子:
-------------------------------------
線程同步的方法除了互斥資源,還有其他的方法。其原理和方式都差不多。
線程的同步的時候,會調用一些方法來造成其他的線程進行等待。其實這裏面也有隱患的。那就是由於某種原因,一直等待下去,造成死鎖。
要避免死鎖,就需要養成良好的編程規範,同時在設計上讓程序合理。