Lishi
Lishi

Reputation: 402

There is any limit on how many critical section i can create?

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

Answers (4)

r.guerzoni
r.guerzoni

Reputation: 1

If your scope was only to "signal" why not use InterlockedExchange and Interlock... family functions?

Upvotes: 0

Logan Capaldo
Logan Capaldo

Reputation: 40346

Prior to XP/Server 2003 you could run out of kernel objects for CRITICAL_SECTIONs (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

Necrolis
Necrolis

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

BarsMonster
BarsMonster

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

Related Questions