線程是程序執行中一個單一的順序控制流程,是程序執行流的最小單元,是處理器調度和分派的基本單位。一個進程能夠有一個或多個線程,各個線程之間共享程序的內存空間(也就是所在進程的內存空間)。一個標準的線程由線程ID、當前指令指針(PC)、寄存器和堆棧組成。它是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運行的基本單位。線程也被稱爲輕量級進程。安全
線程同步是指多線程經過特定的設置(如互斥量,事件對象,臨界區,信號量)來控制線程之間的執行順序(即所謂的同步)也能夠說是在線程之間經過同步創建起執行順序的關係多線程
CreateThread() 建立一個新線程 ExitThread() 正常結束一個線程的執行 TerminateThead() 強制終止一個線程的執行 ResumeThread() 重啓一個線程 SuspendThread() 掛起一個線程 GetExiCodeThread() 獲得一個線程的退出碼 GetThreadPriority() 獲得一個線程的優先級 SetThreadPriority() 設置一個線程的優先級 CloseHandle() 關閉一個線程的句柄 CreateRemoteThread() 再另外一個進程中建立一個新線程 PostThreadMessage() 發送一條消息給指定的線程 GetCurrentThread() 獲得當前的線程句柄 GetCurrentThreadId() 獲得當前線程的ID GetThreadId() 獲得指定線程的ID WaitForSingleObject() 等待單個對象 WaitForMultipleObjects()等待多個對象
臨界區(Critical Section)是一段獨佔對某些共享資源訪問的代碼,在任意時刻只容許一個線程對共享資源進行訪問。若是有多個線程試圖同時訪問臨界區,那麼在有一個線程進入後其餘全部試圖訪問此臨界區的線程將被掛起,並一直持續到進入臨界區的線程離開。臨界區在被釋放後,其餘線程能夠繼續搶佔,並以此達到用原子方式操做共享資源的目的。
臨界區在使用時以CRITICAL_SECTION結構對象保護共享資源,並分別用EnterCriticalSection()和LeaveCriticalSection() 函數去標識和釋放一個臨界區。所用到的CRITICAL_SECTION結構對象必須通過InitializeCriticalSection()的初始化後才能使用,並且必須確保全部線程中的任何試圖訪問此共享資源的代碼都處在此臨界區的保護之下。不然臨界區將不會起到應有的做用,共享資源依然有被破壞的可能。函數