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

2021-06-22 17:33:15 字數 1636 閱讀 2518

同步與互斥:簡單的控制

windows和linux下用於同步與通訊的機制大體一致,下面簡單做乙個歸納。

1.多執行緒的同步

方式                         windows                                 linux                                  備註

原子操作                     有                                            有                                      速度快

互斥鎖                     臨界區和mutex                       pthread_mutex_t              此外還有自旋鎖,讀寫鎖等擴充套件,用於互斥,保證乙個時刻只有乙個執行緒執行

條件變數                event                                        pthread_cond_t                用於同步。

訊號量                   semaphore                             sem_t                                 用於控制資源的訪問

2.多程序的同步

方式                      windows                                 linux    

互斥鎖                  mutex                                    pthread_mutex_t

條件變數              event                                    pthread_cond_t

訊號量                 semaphore                         sem_t

多程序的同步方式與多執行緒的同步方式基本一致,除了不能使用原子操作外;另外對於同步物件的建立方式上稍有差異。

3.多程序的通訊

方式                    windows                                  linux

訊號                      無                                        非同步的通訊機制

共享記憶體             有                                                有

匿名管道             有                                                有

命名管道/fifo    有                                               有

訊息佇列             有                                               有

套接字                 有                                               有

此外還有一些特殊的機制,如記憶體對映檔案,郵箱等機制。

多執行緒之間同步

1 posix訊號量 includeint sem init sem t sem,int pshared,unsigned int value int sem destroy sem t sem int sem wait sem t sem sem trywait sem t sem int sem...

多執行緒之間通訊

多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。需求 第乙個執行緒寫入 input 使用者,另乙個執行緒取讀取 out 使用者.實現讀乙個,寫乙個操作。共享資源源實體類 class res輸入執行緒資源 class intthrad extends thread overr...

多執行緒之間通訊

多執行緒之間通訊 就是多個執行緒在操作同乙個資源,但是操作的動作不同 現在需要實現,生產一台電機,銷售一台電機問題。實現 執行結果 資料發生錯亂,造成執行緒安全問題 解決執行緒安全問題 通過wait notify來解決。wait和sleep的區別 wait可以指定時間也可以不指定時間,sleep必須...