實現併發的管道

2022-05-24 06:06:14 字數 2181 閱讀 7982

管道客戶端

#define  _crt_secure_no_warnings#include

#include

#include

#include

#define size 4096

char pipename[128] = "

\\\\.\\pipe\\cloudpipe";

handle m_pipe =null;

inta;

intb;

void

run()

void

main()

intnwrite;

intnread;

run();

char winfo[1024] = ;

sprintf(winfo,

"%d %d

", a, b);//

列印資料

writefile(m_pipe, winfo, strlen(winfo), &nwrite, null);//

寫入 memset(winfo, 0, sizeof(winfo));//

清零 readfile(m_pipe, winfo, 1024, &nread, null);//

讀取int

res;

sscanf(winfo, "%d

", &res);

printf(

"\n%d+%d=%d

", a, b, res);

system(

"pause");

}

2.服務端

#define  _crt_secure_no_warnings#include

#include

#include

#include

#define size 4096

#define max_connect 128

int startthreadnum = 10;//

一開始有10個執行緒存在

char pipename[128] = "

\\\\.\\pipe\\cloudpipe";

typedef

struct

info

pipe_st;

pipe_st pipeinst[max_connect];

//128個結構體

dword winapi severthread(

void *lp)

; pipe_st curpipe = *(pipe_st*)lp;//

獲取當前結構體

初始化乙個結構體

while (1

)

if (!readfile(curpipe.hpipe,szbuf,size,&nread,null))

inta, b;

sscanf(szbuf,

"%d %d

", &a, &b);

memset(szbuf,

0, sizeof(szbuf));//

清零 sprintf(szbuf, "

%d", a +b);

writefile(curpipe.hpipe, szbuf, strlen(szbuf), &nwrite, null);//

寫入disconnectnamedpipe(curpipe.hpipe);

//斷開

}

return0;

}void

start()

//建立事件

pipeinst[i].hevent = createeventa(null, false, false, false);//

建立事件

//建立執行緒

pipeinst[i].hthread=createthread(null,0,severthread,&pipeinst[i],0

,null);

}printf(

"sever start");

}void

end()

void

main()

3.壓力測試

#include #include 

#include

void

main()

}}

python 併發程式設計 管道

1.管道 from multiprocessing import pipe conn1,conn2 pipe 返回兩個值 conn1.send wdc 傳送print conn2.recv 接收conn2.send yhf print conn1.recv 結果 雙向通訊 2.在程序中傳遞資料 fr...

Python併發程式設計 管道

from multiprocessing import pipe,process def func conn1,conn2 conn2.close 子程序只需使用connection1,故關閉connection2 while true try msg conn1.recv print msg ex...

shell多執行緒 2 之基於管道實現併發

在shell指令碼裡批量執行程式是比較常見的方式,如果程式很多,每個執行時間比較長,則順序執行需要花費大量的時間。此時併發就成為我們考慮的方向。上篇 shell多執行緒 中我們已經簡單實現了基於for迴圈的併發,可以顯著提高工作效率 缺點是cpu的核心不是無限的,如果全部占用,則會影響系統的正常執行...