2011-03-08 155 views
4

我一直沒能找到一個很好的例子,說明如何使用boost :: interprocess :: named_semaphore(即使在Boost網站上也沒有)。提升named_semaphore示例?

我可以看到關於interprocess_semaphore的一些信息,但它們看起來很不一樣,我不知道是否顯示了一個也適用於另一個。

有沒有人可以給我一些這樣的鏈接的例子/tutorials/documentation?

謝謝。

回答

2

interprocess_semaphorenamed_semaphore之間的主要區別是,interprocess_semaphore與使用共享存儲器,其中作爲named_semaphore不需要被構造(使用構建體)或共享存儲在共享存儲器,因爲它通過名稱來引用,而不是匿名。

命名同步方法使用不同的對象來訪問相同的資源,但使用相同的資源,其中匿名同步方法需要在shared_memory或其他一些機制中共享相同的對象才能訪問相同的資源。

這意味着named_semaphore有3個構造函數可以打開或創建引用的同步方法,而interprocess_semaphore只有1個構造函數。

如預期的那樣,兩種信號類型都執行post,wait,try_waittimed_wait

更多相關信息有herehere。使用named_semaphore

一個例子可here

+0

我很快就會來看看你的鏈接...謝謝你。 – Pietro 2012-02-20 14:44:03

+0

我對此感到困惑:「兩個信號類型按預期實現wait,notify_one和notify_all。」 我從來沒有見過實現類似「notify_all」的信號量。看起來這些Boost信號量實現了post,wait,try_wait和timed_wait。這是你的意思,還是我錯過了什麼? – 2013-08-15 01:41:38

+0

您描述了named_condition,它與named_semaphore不同。 – Jon 2015-09-01 19:49:06