I don’t have an answer about how to do this with Boehm. However, here are two GCs which seem to have enough control and encapsulation to have a totally independent GC context per-thread.
- Lua’s Garbage Collector – MIT
- Steve Dekorte’s libgarbagecollector – BSD