Removing The Global GC Lock: Largest Plausible Number of Threads?

dsimcha dsimcha at yahoo.com
Wed May 11 21:14:54 PDT 2011


I'm thinking about ways to remove the global lock from the garbage 
collector for most small allocations.  I'm basically thinking of making 
the free lists thread local.  Every scheme I can come up with that 
doesn't require a radical overhaul of the current implementation 
requires every thread having a unique ID.  I want to do this as simply 
and efficiently as possible, preferably using dense integers.  Is it 
reasonable to assume that no program will ever need more than 2 ^^ 16 
thread (about 65,000) simultaneously so that I can store these indices 
as ushorts?  If a program creates a lot of short-lived threads, the 
indices will be recycled, so having a huge number of threads 
non-simultaneously is not a problem.


More information about the Digitalmars-d mailing list