2012-06-16 35 views
0

有一個衆所周知的算法,使用純WinAPIs/C++在Windows平臺上採用單個進程的線程之間讀取器/寫入器鎖定同步:多閱讀器,在Windows的進程之間單寫同步鎖與WinAPI的/ C++

Here's an example

對我來說,我需要幾道工序之間做到這一點,即作者是在一個過程中,讀者都在其它進程。任何想法如何做到這一點?

PS。我需要這個已經開發的項目,所以我不能使用除C++/MFC或純WinAPI以外的其他任何東西。換句話說,我不能使用Boost或類似的擴展。

回答

3

您可以使用相同的算法,但不是CriticalSection可以使用Mutexes從WinAPI的。
如果您爲您的Mutex對象使用相同的名稱,則可以在多個進程中使用它們。

+0

謝謝。全球命名的互斥鎖的確可以解決臨界區問題。但我主要關心的是'm_cReaders'計數器,因爲EnterReader()/ LeaveReader()將從不同的讀者進程調用。那麼你如何實現呢? – ahmd0

+0

@ ahmd0:只要把你的櫃檯在[共享內存區(http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551%28v=vs.85%29.aspx)。給你的事件一個名字,然後它應該工作。 – mkaes

+0

是的,我正在做。但是我遇到了這樣一個問題。如果我只是像在樣本中一樣增加或減少閱讀器計數器,如果其中一個閱讀器進程崩潰並且不減少其計數器,我可以遇到「情況」。這種情況會使我的機制陷入僵局。 – ahmd0

相關問題