gpt4 book ai didi

c - 在多个线程中独立运行 Boehm GC

转载 作者:太空狗 更新时间:2023-10-29 16:20:48 26 4
gpt4 key购买 nike

我正在尝试写一些 bindings到用于 Rust 的 Boehm GC。

一些背景:Rust 被设计成一种高并发语言,这种设计的结果是能够将 GC 指针静态限制在分配它们的线程内(即,分配在线程 x 永远不能被另一个线程保持事件状态(甚至根本无法被其他线程引用)。

因此,我希望插入 Boehm 尽可能利用这一点来提高性能:

  1. 线程安全的,所以我可以从多个线程分配和收集
  2. 尽可能停止收集(即仅当前线程),其他线程可以继续运行,因为它们不可能干扰与自身之外的 GC 指针相关的任何内容
  3. 最好完全在线程本地进行,不同线程的 GC“实例”之间不同步

1 很简单,但我找不到 2 和 3 的任何工具。最重要的部分是 1 和 2,因为我希望能够让线程在后台运行,而不管其他线程在做什么(即使它们都在分配和垃圾收集千兆字节的内存)。

(我做了 know about THREAD_LOCAL_ALLOC & gc_thread_local.h ,但这并不能完全满足 3,它只是提高了效率,但在线程之间传输本地线程分配的指针仍然有效,而我不需要那个保证。)

最佳答案

我没有关于如何使用 Boehm 执行此操作的答案。然而,这里有两个 GC,它们似乎具有足够的控制和封装,每个线程都有一个完全独立的 GC 上下文。

关于c - 在多个线程中独立运行 Boehm GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20921988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com