2011-08-23 20 views

回答

6

否:沒有辦法獲得可靠的答案,因爲它可能會在函數返回之前更改,而Boost的接口也不提供不可靠的方法。

如果你想要這樣的事情,你需要在互斥體旁邊實現你自己的線程安全計數器;我不確定你是否可以可靠地做到這一點,但如果這足夠滿足您的需求,您可以很容易地區分「大約無」,「一些」和「大量」。

+0

「諮詢」號碼怎麼樣? – 2011-08-23 23:09:15

+0

@pst:我不知道一個不可靠的答案如何有用,但是Boost並沒有給出其中的一個。 –

0

您可以在互斥體請求周圍放置一個互斥體,使計數器遞增,並且只允許您在計數器爲零時訪問該互斥體。儘管如此,這看起來像是可怕的矯枉過正。

可能更好的方法是建立一個小隊列,並將所有請求添加到隊列中(push_back和pop_front周圍有一個互斥體以及一個額外的peek_front)。不過,這似乎是一個相當有趣的練習。

相關問題