VC 多執行緒 程序間通訊

2021-09-07 15:48:31 字數 1599 閱讀 9204

郵槽是windows系統提供的一種單向通訊的機制,郵槽能傳輸的資料非常小,一般在400k左右。

建立郵槽

handle createmailslot(

lpctstr lpname, //指定郵件槽的名字,如//./mailslot/[path]name,小數點表示伺服器為本的機器(不能為遠端計算機建立郵件槽)。

dword nmaxmessagesize,//可寫入郵件槽的最大訊息長度(位元組單位),客戶機發生訊息大於該值伺服器不接受該訊息;為0,接收任意長度訊息。 dword lreadtiemout,//等待模式和不等待模式,mailslot_wait_forever無限期等待,0立即返回,其它值以毫秒為單位。 lpsecurity_attributes lpsecurityattributes//訪問控制許可權,一般都設為null );

例項

服務端

1 #include 2 #include 3 intmain()

4 12 else 13 21 else 22 25 closehandle(mail); //關閉控制代碼 26 sleep(1000); 27 } 28 29 return 0; 30 }

客戶端

1 #include 2 #include 3 intmain()

4 14 else 15 21 else 22 26 closehandle(mail2); //關閉郵槽 27 } 28 sleep(10000); 29 return 0; 30 }

命名管道是一種不但能在同乙個機器上實現兩個程序通訊,還能在網路中不同機器上的兩個程序之間通訊的機制。命名管道傳輸資料是採取基於連線並且可靠的傳輸方式,所以命名管道傳輸資料只能一對一進行傳輸。

handle winapi createnamedpipe(

lpctstr lpname,

dword dwopenmode,

dword dwpipemode,

dword nmaxinstances,

dword noutbuffersize,

dword ninbuffersize,

dword ndefaulttimeout,

lpsecurity_attributes lpsecurityattributes

);

例項:

服務端

1 #include 2 #include 3 intmain()

客戶端

匿名管道是沒有命名的管道,只能在父程序和子程序之間進行資料通訊,與命名管道相比,匿名管道不能被使用在網路程序之間。

非同步i/o模式

在套接字程式設計中,非同步i/o模式是指在當網路中有相關的套接字訊息到來時,程式才會呼叫相關的響應函式對該訊息進行處理,否則,程式將在系統後台繼續等待相關的訊息到來或者實現其他操作。

vc 程序間通訊

一直以來沒有寫過本地程式間的通訊 今天終於有需求了,上網大概看了下,方式還是比較多的,就說說兩種最簡單的吧,當然還有以後用到再說 1 試用自定義消信通訊 這種方式主要是傳遞整形或列舉型資料 可以使用 define wm user x,0x4002 使用wm copydata訊息通訊 介紹下 type...

程序間通訊與多執行緒同步

常見的程序間通訊方式包括 管道 pipe 共享記憶體 sharedmemory 訊息佇列 messagequeue 訊號量 semaphore socket 套接字 常見的多執行緒同步方式主有 是臨界區 critical section 互斥鎖 mutex 訊號量 semaphore 事件 even...

多執行緒 執行緒間通訊

wait 方法的作用是使當前執行的執行緒進入等待,執行到 wait 一行進入等待 當執行緒被喚醒時從 wait 下一行開始執行。wait 方法需要在 synchronized 塊中呼叫,否則會報錯。wait 方法會釋放鎖,其它執行緒可以競爭獲得鎖 wait 方法有乙個帶時間引數的,當時間到了可以自動...