Windows下C 多執行緒同步

2021-07-22 11:09:30 字數 1108 閱讀 8857

程式

是計算機指令的集合,它以檔案的形式儲存在磁碟上。而程序通常被定義為乙個正在執行程式的例項,是乙個程式在其自身位址空間的依次執行活動。 程序

執行緒:由執行緒的核心物件和執行緒棧組成

當多執行緒訪問全域性變數時需要多執行緒同步:互斥物件、事件物件、關鍵**段

互斥物件:

互斥獨享可以看做是一把房間鑰匙,只有得到這把鑰匙後,我們才能進入放進啊,完成工作,我進入房間後,要是在我手上,其他人拿不到,因此無法進入房間,只能等待,等我離開房間交出鑰匙,其他人才能進入房間。

幾個注意的地方:

(1)互斥量為核心物件,能夠與其他執行緒或特殊事件取得同步;

(2)速度比臨界區要慢;

(3)互斥量物件與所有其它核心物件的不同之處在於它是被執行緒所擁有的,互斥量物件除了記錄當前訊號狀態外,還要記住此時那個執行緒擁有它。

(4)這個常來被運用於限制程式啟動次數!

#include
#include using namespace std;

dword winapi funproc1(lpvoid lp1);

dword winapi funproc2(lpvoid lp2);

int tickets=100;

handle hmutex;

void main()

dword winapi funproc1(lpvoid lp1)

dword winapi funproc1(lpvoid lp1)

dword winapi funproc1(lpvoid lp1)

{ while(true)

{//判斷能否得到指定臨界區的物件的所有權,如果不能得到就一直等待,得到後訪問受保護的資源,訪問完成後釋放指定的臨界區的物件的所有權

entercriticalsection(&g_cs);

if(tickets>0)

{ sleep(1);

cout<<"thread1 sell tickets:"<0)

{ sleep(1);

cout<<"thread2 sell tickets:"<

windows下C多執行緒

看到乙個簡單的windows程式設計例項,給大家分享一下 這個例項主要用createthread為乙個宣告的方法建立乙個程序,這個被建立的方法必須用dword winapi 修飾,需要有lpvoid 型別的引數,如果沒有這個引數,在建立程序時要對這個方法強制型別中轉換 dword winapi my...

Windows下C 多執行緒同步與互斥簡單運用

1.互斥量,mutex cpp view plain copy include include using namespace std dword winapi thread1 lpvoid lpparmeter dword winapi thread2 lpvoid lpparmeter stat...

Windows下C 實現多執行緒

有時候我們想在乙個類中實現多執行緒,主線程在某些時刻獲得資料,可以 通知 子執行緒去處理,然後把結果返回。下面的例項是主線程每隔2s產生10個隨機數,將這10隨機數傳給多執行緒類,讓它接收到資料後馬上列印出來。首先看類的定義 cpp view plain copy print?pragma once...