以我的理解,以下是MRI 1.9 GIL的工作原理:
然而,正如这个文章所指出的,我们只能保证纯C实现的原子性。尽管如此,如果线程的某些部分包含红宝石代码,我们仍然处于种族状态的危险之中。
我的问题是,如果线程在执行之前需要获取GIL,为什么只有C实现方法才能保证原子性?
提前谢谢你!
发布于 2015-10-03 17:51:01
GVL保证只有一个线程可以同时执行Ruby代码。当然,不同的Ruby线程可以在不同的时间执行Ruby代码。
此外,大多数Ruby实现都没有GVL。
https://stackoverflow.com/questions/32920289
复制相似问题