控制台下實現簡單的執行緒同步 事件

2021-06-25 10:34:44 字數 1361 閱讀 8345

1、場景模擬:

(1)有兩個售票員正在售票;

(2)一共有10張票待售;

(3)兩個售票員乙個是老婆婆(動作比較慢),另乙個是年輕女孩(動作比較快);

2、**實現:

(1)兩個售票員用兩個執行緒來表示;

(2)用乙個全域性變數表示票數;

3、實現如下:

// thredsyn.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "windows.h"

#include "process.h"

int g_tickets = 10;

void sale1(void*);

void sale2(void*);

int _tmain(int argc, _tchar* argv)

void sale1(void*)

}void sale2(void*)

}

4、執行如下:

5、可以看到出錯了,saler2(年輕女孩)把票都賣完了,但是老婆婆還在繼續賣票(saler1:0).

6、可通過事件來實現執行緒同步:

// thredsyn.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "windows.h"

#include "process.h"

//int g_tickets = 10;

////void sale1(void*);

//void sale2(void*);

////int _tmain(int argc, _tchar* argv)

////

//void sale1(void*)

////}

////void sale2(void*)

////}

int g_tickets = 10;

handle hevent;

void sale1(void*);

void sale2(void*);

int _tmain(int argc, _tchar* argv)

void sale1(void*)

else

}}void sale2(void*)

else}}

7、正確了:

控制台下輸出菱形的作業

這是在控制台下輸出的菱形 using system using system.collections.generic using system.linq using system.text namespace 菱形製作 for z 1 z m z console.write n m 2 else f...

執行緒條件控制實現執行緒的同步

與條件變數相關api 條件變數是執行緒另一可用的同步機制。條件變數給多個執行緒提供了乙個會合的場所。條件變數與互斥量一起使用時,允許執行緒以無競爭的方式等待特定的條件發生。條件本身是由互斥量保護的。執行緒在改變條件狀態前必須首先鎖住互斥量,其他執行緒在獲得互斥量之前不會察覺到這種改變,因為必須鎖定互...

win32控制台下的main

include stdafx.h int main int argc,char argv if strcmp argv 0 1 1.exe 0 if argc 2 strcmp argv 1 0 if argc 2 if argc 2 strcmp argv 1 mzjslt 0 return 0 ...