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.

Reply via email to