标签: ruby multithreading gil
根据我的理解,这里是MRI 1.9 GIL的工作原理:
然而,正如article所指出的,我们只能保证纯C实现的原子性。话虽这么说,如果我们的线程的某些部分包含ruby代码,我们仍然处于竞争状态的危险之中。
我的问题是线程是否需要在执行之前获取GIL,为什么只有C实现方法才能保证原子性?
提前谢谢!
答案 0 :(得分:0)
GVL保证只有一个线程可以在同时执行Ruby代码。但是当然不同的Ruby线程可以在不同的时间执行Ruby代码。
此外,大多数Ruby实现无论如何都没有GVL。