2011-01-19 64 views
1

我有一個可以在多個線程上訪問的類。我可以創建多少個關鍵部分有任何限制?

,以確保我沒有同時訪問,我將使用CCriticalSection

我在想,如果我可以只創建一個CCriticalSectionfor對象的任何副本(我想我可以有大約100-1000這個對象在程序中),或者最好創建一個靜態成員CCriticalSection並將其用於所有對象?

回答

1

此前XP/Server 2003中,你可能會耗盡內核對象爲CRITICAL_SECTION S(專門用於仲裁時,有上CRITICAL_SECTION爭事件)對於XP及以後你有界,你是對很多事情,你的虛擬地址空間。

0

當然有一個限制,但1000是完全正常的。 但在你的情況下,我相信靜態會員更好。

創建額外的對象是你應該從性能預期中做的最後一件事。

0

Windows有上段的數量沒有限制,你可以創造出比可用內存(由於內部調試的聯繫等,其消耗超過sizeof(CCriticalSection)sizeof(CriticalSection)

0

如果你的範圍是只爲「信號」爲什麼不使用InterlockedExchange和Interlock ...家庭功能?

相關問題