執行緒同步與非同步套接字程式設計

2021-08-27 16:49:28 字數 1240 閱讀 5578

執行緒同步與非同步套接字程式設計

1.事件物件

上一次介紹了利用互斥物件實現執行緒同步

這次將繼續介紹另兩種執行緒同步的方法:事件物件和關鍵字**段。

1.1事件物件

事件物件也屬於核心物件,包括三個成員

1)使用計數

2)用於指明該事件是乙個自動重置的事件還是乙個人工重置的事件的布林值

3)用於指明該事件處於已通知狀態還是未通知狀態的布林值

事件物件有兩種不同的型別:人工重置的事件物件和自動重置的事件物件。當人工重置的事件物件得到通知時,等待該事件的所有執行緒均變為可排程執行緒。當乙個自動重置的事件物件得到通知時,等待該時間物件的執行緒只有乙個執行緒變為可排程執行緒。

1.2建立事件物件

handle createevent( //建立事件物件

lpsecurity_attributes lpeventattributes,

bool bmanualreset,

bool binitialstate,

lptstr lpname);

bool setevent(//設定事件物件狀態

handle hevent );

bool resetevent( //重置事件物件狀態

handle hevent );

1.2.1利用事件物件實現執行緒同步

#include #include using namespace std;

dword winapi fun1proc(

lpvoid lpparameter // thread data

);dword winapi fun2proc(

lpvoid lpparameter // thread data

);int tickets=100;

handle g_hevent;

void main()

dword winapi fun1proc(

lpvoid lpparameter // thread data){

while(true)

{ entercriticalsection(&g_cs);

sleep(1);

if(tickets>0)

{ sleep(1);

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

{ sleep(1);

cout<<"thread2 sell ticket : "<

==參考vc++深入詳解

執行緒同步和執行緒非同步 同步套接字非同步套接字

執行緒同步和執行緒非同步有什麼區別?重要基礎知識 打個比方,如果你在等乙個人,同步的時候,你會一直等到她來了之後才做其他事情,這個過程除了等待你啥都不會做,非同步的時候,你一邊在等,可能一邊玩遊戲或者是看報紙什麼的,一直到她到來,你的等待狀態才會結束 在實現上,同步的過程會阻塞程序的所有其他操作,將...

第十六章 執行緒同步與非同步套接字程式設計

事件物件也屬於核心物件,主要包括三個成員 使用計數 指定是自動重置事件還是人工重置事件的布林值 指定是已通知狀態還是未通知狀態的布林值。createevent函式建立乙個匿名或者命名的事件物件 handle createevent lpsecurity attributes lpeventattri...

非同步套接字程式設計

部分說明 define um sock wm user 1 on message um sock onsock afx msg void onsock wparam wparam lparam lparam bool cmydlg initsocket sockaddr in addrsock ad...