2010-09-19 46 views

回答

2

這取決於您的通信要求。通常服務會創建互斥鎖和共享內存,客戶打開它們並執行其他操作。 OutputDebugString()是使用互斥鎖和共享內存(以及某些事件)的IPC的典型示例。 OutputDebugString()如何工作的Here is a detailed examination;你可以做類似的事情。

0

我建議以下

  1. 服務創建一個互斥體,2個事件和內存映射文件(MMF),所有命名

  2. 當服務將數據發送到其他進程

    a。取得互斥鎖的所有權

    b。將數據寫入m.m.f.

    c。信號事件#1,這意味着該服務有程序的新信息

    d。釋放互斥

  3. 當程序需要將數據發送到服務

    一個。取得互斥鎖的所有權

    b。將數據寫入m.m.f.

    c。信號事件#2,這意味着該程序有服務的新信息

    d。釋放互斥體

  4. 該服務檢查是否開啓事件#2。如果不去做它的東西,否則它:

    a。 b。擁有m.m.f

    b。讀取數據

    c。重置事件#2

    d。釋放互斥體

  5. 程序檢查是否開啓事件#1。如果不去做它的東西,否則它:

    a。 b。擁有m.m.f

    b。讀取數據

    c。重置事件#1

    d。發佈mutext

這種方法的問題是,消息可能會丟失時(例如服務管理寫在第2級的消息,之前該程序可以讀取第一),只有1進程可連接本身到服務(你必須確保它)

我建議一個基於套接字的解決方案,如果可能的話,在這些問題更緊密的地方發生。

P.S.您可以使用m.m.f來製作某種隊列以避免第一個問題

相關問題