2008年6月20日 星期五

[C++] 多行程同步問題最簡單範例 -- Inter-Processes Synchronized Demo

面對多執行緒同步的問題, 通常可以用 CreateEvent 或 CreateMutex 然後再來 WaitForSingleObject 等待存取權限.

其實 多 processes 也可以用相同的技術達到同步的目的. 只是大家都用 thread 的例子說明而已.

分別處在不同執行檔內的 thread 同步問題還常常見到的.
例如: Server 不斷的寫狀態到一個檔案, Client 則不斷的從共用檔案讀取資料.

剛好, 這類問題我過去有寫過範例:

-------------------------

Event 使用範例:

程式行為:

總共有三個 processes 分別為 Main, A, B. 其中利用 Event 進行同步的動作.

Source code 分別為:

  Main

  A

  B

  專案下載

 

其實主要的觀念就是建立一個有名字的Kernel Object, 然後在另一個 process 中的 thread 開啟, 最後兩個 processes 中的 threads 就靠這個共同 Object 進行 Wait 同步.

不過這裡有一點要注意的是, 利用 OpenEvent 開啟共用物件時,   一定要用SYNCHRONIZE 參數,

例如:

     HANDLE hEvent=OpenEvent(SYNCHRONIZE,FALSE,"Share");

否則會傳回 NULL 而且 GetLastError() 不會告訴你錯在哪裡.

 

by Jing

沒有留言:

張貼留言