我有一個可以在多個線程上訪問的類。我可以創建多少個關鍵部分有任何限制?
,以確保我沒有同時訪問,我將使用CCriticalSection
我在想,如果我可以只創建一個CCriticalSectionfor對象的任何副本(我想我可以有大約100-1000這個對象在程序中),或者最好創建一個靜態成員CCriticalSection並將其用於所有對象?
我有一個可以在多個線程上訪問的類。我可以創建多少個關鍵部分有任何限制?
,以確保我沒有同時訪問,我將使用CCriticalSection
我在想,如果我可以只創建一個CCriticalSectionfor對象的任何副本(我想我可以有大約100-1000這個對象在程序中),或者最好創建一個靜態成員CCriticalSection並將其用於所有對象?
此前XP/Server 2003中,你可能會耗盡內核對象爲CRITICAL_SECTION
S(專門用於仲裁時,有上CRITICAL_SECTION
爭事件)對於XP及以後你有界,你是對很多事情,你的虛擬地址空間。
當然有一個限制,但1000是完全正常的。 但在你的情況下,我相信靜態會員更好。
創建額外的對象是你應該從性能預期中做的最後一件事。
Windows有上段的數量沒有限制,你可以創造出比可用內存(由於內部調試的聯繫等,其消耗超過sizeof(CCriticalSection)
或sizeof(CriticalSection)
。
如果你的範圍是只爲「信號」爲什麼不使用InterlockedExchange和Interlock ...家庭功能?