Re:The Year of C++ Successor Languages
by pebal on Monday January 02, 2023 @01:00PM
(#34221200)
You can have GC engine without stopping the world. Completely pauseless.
[ Parent
| on HN ]
How?
By analyzing mutators activity. Only the compacting GCs have to stop the world.
Unsure what you mean by "mutators". I am guessing "pointers that can be used to modify data at a memory address"
If so, how can you (as a GC) be sure that while you were adding up all the pointers to an address, and finding none, that another one was not made?
Mystified
Mutators are threads that allocate memory and manipulate pointers, they can work completely independently of the GC. A mutator needs only to tag an object when copies or moves a pointer to this object. The GC detects this tag and marks the object as alive. Here is a working implementation for C++: https://github.com/pebal/sgcl
I could listen to you or whoever talk about this all day. Just on the chance you know a good one, do you know any good conference talks or podcasts I can listen to on the same topic?
You can watch Herb Sutter talk about deferred_ptr: https://youtu.be/JfmTagWcqoE
But how can it Markit as dead as the mutatorthread runs?
It must stop the thread surely?