我一直沒能找到一個很好的例子,說明如何使用boost :: interprocess :: named_semaphore(即使在Boost網站上也沒有)。提升named_semaphore示例?
我可以看到關於interprocess_semaphore的一些信息,但它們看起來很不一樣,我不知道是否顯示了一個也適用於另一個。
有沒有人可以給我一些這樣的鏈接的例子/tutorials/documentation?
謝謝。
我一直沒能找到一個很好的例子,說明如何使用boost :: interprocess :: named_semaphore(即使在Boost網站上也沒有)。提升named_semaphore示例?
我可以看到關於interprocess_semaphore的一些信息,但它們看起來很不一樣,我不知道是否顯示了一個也適用於另一個。
有沒有人可以給我一些這樣的鏈接的例子/tutorials/documentation?
謝謝。
interprocess_semaphore
和named_semaphore
之間的主要區別是,interprocess_semaphore
與使用共享存儲器,其中作爲named_semaphore
不需要被構造(使用構建體)或共享存儲在共享存儲器,因爲它通過名稱來引用,而不是匿名。
命名同步方法使用不同的對象來訪問相同的資源,但使用相同的資源,其中匿名同步方法需要在shared_memory或其他一些機制中共享相同的對象才能訪問相同的資源。
這意味着named_semaphore
有3個構造函數可以打開或創建引用的同步方法,而interprocess_semaphore
只有1個構造函數。
如預期的那樣,兩種信號類型都執行post
,wait
,try_wait
和timed_wait
。
更多相關信息有here和here。使用named_semaphore
的
一個例子可here
我很快就會來看看你的鏈接...謝謝你。 – Pietro 2012-02-20 14:44:03
我對此感到困惑:「兩個信號類型按預期實現wait,notify_one和notify_all。」 我從來沒有見過實現類似「notify_all」的信號量。看起來這些Boost信號量實現了post,wait,try_wait和timed_wait。這是你的意思,還是我錯過了什麼? – 2013-08-15 01:41:38
您描述了named_condition,它與named_semaphore不同。 – Jon 2015-09-01 19:49:06