Reputation: 402
i have a Class that can be accessed on multiple thread.
To make sure i don't have simultaneous access i will use a CCriticalSection
I was wondering if i can just create a CCriticalSectionfor any copy of the object (i think i can have about 100-1000 this object in the program) or it will be best to create a static member CCriticalSection and use this for all the object?
Upvotes: 1
Views: 895
Reputation: 1
If your scope was only to "signal" why not use InterlockedExchange and Interlock... family functions?
Upvotes: 0
Reputation: 40346
Prior to XP/Server 2003 you could run out of kernel objects for CRITICAL_SECTION
s (specifically the event used to arbitrate when there was contention on the CRITICAL_SECTION
). For XP and beyond you're bounded as you are for many things, by your virtual address space.
Upvotes: 1
Reputation: 26171
Windows has no limit on the number of sections you can create other than available memory (due to internal debug linkages, its consumes more than sizeof(CCriticalSection)
or sizeof(CriticalSection)
.
Upvotes: 0
Reputation: 6585
Surely there is a limit, but 1000 is perfectly fine. But in your case I believe static member is better.
Creating extra objects is the last thing you should do from the performance prospective.
Upvotes: 0