3

boost線程庫有一個abstraction for thread specific (local) storage。我已經瀏覽了源代碼,並且似乎TSS功能可以在任何現有線程的應用程序中使用,而不管它是從boost :: thread --ie創建的天氣,這意味着某些回調在內核中註冊爲掛鉤在回調函數中,當線程或進程超出範圍時可以調用任何TSS對象的析構函數。我發現了這些回調。提升線程特定存儲問題(boost/thread/tss.hpp)

我需要從各種網絡服務器的工作線程中的OpenSSL中緩存HMAC_CTX(請參閱this,詳細,我正在嘗試做什麼的問題),因此我不控制線程的生命週期 - 網絡服務器呢。因此,我將在未由boost :: thread創建的線程上使用TSS功能。

我只是想在我開始實施緩存邏輯之前驗證我的假設,我的邏輯中是否有任何缺陷?

回答

1

你說得對。您可以將它用於不是由boost :: thread創建的線程。 如果你看看test_tss.cpp,你可以看到他們測試的確切,並且它應該適用於POSIX和Windows線程。

+0

謝謝!你的眼球受到讚賞。 – 2010-04-13 08:21:54

1

這是部分正確的,因爲在主線程完成時不會調用析構函數。