垃圾收集器如何有效地停止所有线程?

时间:2016-08-16 21:20:35

标签: c++ multithreading garbage-collection

我目前正在实现一种简单语言的编译器作为C ++中的辅助项目。我想添加垃圾收集器。大多数(所有?)垃圾收集算法都涉及到某个时刻停止世界。

我有兴趣了解是否有一种从父线程暂时暂停一组线程的有效方法。我看到的唯一其他选项是定期检查GC是否要在每个函数和循环的顶部运行。这让我感到效率低下,因为我每次都必须锁定和解锁,增加了相当大的开销。有没有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:-1)

没有合适的方法 - 您无法期望C ++标准库能够神奇地了解您的VM可以挂起的位置。那个逻辑是你必须写的东西。

现在你可以按照你的描述实现规则,或者你可以用少于N条指令的叶子函数做一个例外,并且只检查每个第三次循环迭代等等。直到你,真的,你可以投入大脑的数量没有限制。