Writing a Simple Garbage Collector in C
21–24 of 24 posts
Re: Writing a Simple Garbage Collector in C
#22Re: Writing a Simple Garbage Collector in C
#23Earlier quoted context omitted.
> None of this is thread-safe. It needs a global mutex lock. Or have a separate allocation chain for each thread. It would increase fragmentation, but not by a lot, and probably increase performance by more than enough to make up for it.
The problem is that you would still need to lock around sbrk.
Re: Writing a Simple Garbage Collector in C
#24Earlier quoted context omitted.
Does this picture change much between the 32-bit vs 64-bit world? How about if there are few vs many threads? (For instance, if a program on 32-bit windows spawns hundreds of threads, surely you can't squeeze all those stacks below the heap, can you?)
The 64-bit address space is much bigger and even more unpredictable when there's ASLR, but in my experience the main thread's stack still ends up below the executable; they're just much farther apart. I believe other threads' stacks also fit somewhere below, but with 32-bit it will start allocating them in areas that would've otherwise been heap once the area below the executable runs out.