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?
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