vc 學習筆記16 執行緒同步,非同步套接字

2022-08-14 07:12:16 字數 1605 閱讀 5871

利用createevent函式,建立執行緒互斥執行,是執行緒同步的另一種方式,(鎖機制);

#include #include dword winapi func1proc(lpvoid lpparameter);

dword winapi func2proc(lpvoid lpparameter);

int tickets=100;

handle h_hevent;//儲存時間物件的控制代碼,

void main()

dword winapi func1proc(

lpvoid lpparameter // thread data

)if ( lobyte( wsadata.wversion ) != 2 ||

hibyte( wsadata.wversion ) != 2 )

4,在chatdlg裡面新增成員變數m_socket和initsock()函式,初始化socket相關資訊

bool cchat_asydlg::initsocket()

//繫結套接字的資訊

sockaddr_in addrsock;

addrsock.sin_addr.s_un.s_addr=htonl(inaddr_any);

addrsock.sin_family=af_inet;

addrsock.sin_port=htons(6000);

if (socket_error==bind(m_socket,(sockaddr*)&addrsock,sizeof(sockaddr)))

//呼叫wsaselect函式請求乙個基於訊息的網路通知;

if(socket_error==wsaasyncselect(m_socket,m_hwnd,wm_sock,fd_read))//fd_read註冊乙個讀取的事件

return true;

}

5 在initchatdlg(0裡面呼叫initsock()函式;

6新增訊息對映函式和定義訊息;

on_message(wm_sock,onsock)//訊息對映
#d#define wm_sock wm_user+1
7,新增訊息響應函式,並實現之;

afxafx_msg void onsock(wparam,lparam);//建立標準訊息響應函式
void cchat_asydlg::onsock(wparam wparam,lparam lparam)

str.format("%s 說:%s",inet_ntoa(addrfrom.sin_addr),wsabuf.buf);

cstring strtemp;

str+="\r\n";

getdlgitemtext(idc_edit_recv,strtemp);

str+=strtemp;

setdlgitemtext(idc_edit_recv,str);

break;

}}

7 新增「send」按鈕的訊息函式;(將獲得的訊息輸出到對話方塊上)

void cchat_asydlg::onbtnsend() 

(未完全理解)

1

C 筆記16 多執行緒和同步

同步多執行緒處理模式 什麼是程序 執行緒 建立執行緒var task newtask 宣告執行緒之後並不會馬上執行。task.start 執行執行緒int times 5000 var task1 newtask var task2 newtask task1.start task2.start t...

C 執行緒同步 (學習筆記)

1.利用mutex 互斥物件 2.利用event 事件物件 3.利用臨界區 critical section 效率更高 4.利用semaphore訊號量 filename semaphore test.cpp author jarvischu date 2012 11 22 include incl...

學習筆記 執行緒間同步

執行緒間同步,需要等待。等待對於同步的重要性是不言而喻的。考慮乙個工廠的流水線,假設工序1和工序2沒有關聯,那麼找兩個工人各幹的就可以,這兩個工人都可以不認識對方。現在考慮的重點是工序1和工序2有關聯。那麼兩個工序就需要某種形式的溝通和同步。第一種情況 工序1進行到某個時間點時,需要工序2結束。1 ...