多程序間通訊方式和多執行緒同步機制總結

2021-06-20 22:44:08 字數 1380 閱讀 9114

多程序之間通訊方式:

檔案對映:本地之間

共享記憶體:本地之間

匿名管道:本地之間

命名管道:跨伺服器

郵件槽:一對多的傳輸資料,通常通過網路向一台

windows

機器傳輸

剪下板:本地之間

socket:跨伺服器

多執行緒之間通訊方式:

全域性變數

自定義訊息響應

多執行緒之間同步機制:

臨界區:不可以跨程序,忘記解鎖會無限等待,要麼存在要麼沒有,多執行緒訪問獨占性共享資源

互斥量:可以跨程序,忘記解鎖會自動釋放,要麼存在要麼沒有

事件:又叫執行緒觸發器,不可以跨程序,要麼存在要麼沒有,乙個執行緒來喚醒另乙個執行緒(包括自動和人工兩種方式)

訊號量:可以跨程序,始終代表可用資源數量,當資源數為o時,執行緒阻塞,允許多個執行緒同時訪問乙個共享資源

多執行緒程式:

多執行緒程式是併發執行,對於多執行緒的共用資源不能保證能被正確利用即不保證能被獨佔,併發執行的時候,哪個執行緒得到執行的機會是隨機的也是不可預期。為了解決

多執行緒中某個執行緒對資源的獨佔(也就是多執行緒同步問題),只允許乙個執行緒擁有共享資源的獨佔。即多執行緒之間的同步機制。

執行緒:

執行緒包括兩個方面:第一:執行緒核心物件(os用來存放統計資訊的地方);第二:執行緒堆疊(函式引數和區域性變數)

執行緒在它的程序的位址空間執行**。核心物件控制代碼依賴於程序而存在。

建立執行緒函式後建議立刻關閉控制代碼closehandle();

windows api中提供了建立新的執行緒的函式createthread:

msdn中createthread原型:

handle createthread(

lpsecurity_attributes lpthreadattributes, //

執行緒安全屬性

dword dwstacksize, // 堆疊大小

lpthread_start_routine lpstartaddress,// 執行緒函式

lpvoid lpparameter,//執行緒引數

dword dwcreationflags, // 執行緒建立屬性

lpdword lpthreadid // 執行緒id

);

返回值:

在核心物件中分配乙個執行緒標識/控制代碼,可供管理,由createthread返回

多程序間通訊方式和多執行緒同步機制總結

多程序之間通訊方式 檔案對映 本地之間 共享記憶體 本地之間 匿名管道 本地之間 命名管道 跨伺服器 郵件槽 一對多的傳輸資料,通常通過網路向一台windows機器傳輸 剪下板 本地之間 socket 跨伺服器 多執行緒之間通訊方式 全域性變數 自定義訊息響應 多執行緒之間同步機制 臨界區 不可以跨...

執行緒通訊方式同步方式和程序間通訊方式

1 執行緒間的通訊方式 2 執行緒間的同步方式 各個執行緒可以訪問程序中的公共變數,資源,所以使用多執行緒的過程中需要注意的問題是如何防止兩個或兩個以上的執行緒同時訪問同乙個資料,以免破壞資料的完整性。資料之間的相互制約包括 1 直接制約關係,即乙個執行緒的處理結果,為另乙個執行緒的輸入,因此執行緒...

程序 執行緒間同步機制。

一 程序 執行緒間同步機制。臨界區 互斥區 事件 訊號量四種方式 臨界區 critical section 互斥量 mutex 訊號量 semaphore 事件 event 的區別 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源...