解释语言,通过应用行之前可用的状态来逻辑地执行每一行,从而在执行后获得状态。我想知道放松记忆模型是否适用于解释语言。
我搜索解释和放松的记忆模型,但没有击中任何相关的搜索。
发布于 2022-11-26 10:26:26
解释器开销通常是如此之高,所以少订购负载/存储可能不会带来太大的节省。或者,如果您像C++一样使用可选的额外arg来执行像解释器必须处理的shared_var.load(std::memory_order_relaxed)这样的函数,而不是使用像atomic_relaxed_load(shared_var)和atomic_seq_cst_load(shared_var)这样的单独的函数名,甚至是负的节省。
而且,大多数解释语言都不是围绕能够执行无锁原子操作的多个线程设计的,因为它们的对象(因此是内部数据结构)比机器int的级别更高。
这就是为什么CPython会在每个语句周围使用/释放全局解释器锁,所以线程是AFAIK只对I/O和类似的东西有用,在不同的事情上可以阻塞不同的线程。(或者调用一个C库函数来做一些计算或什么的。)如果您希望您的解释语言能够让多个线程同时进行解释,那么您就必须从底层设计内部元素以确保安全。
(我想有些语言可能会有这样的解释器,但我不记得读过像CPython这样的主流语言。即使使用node.js JIT引擎的Javascript环境也不支持同时运行多个线程。不过,像Java这样的语言也是一个VM,但它的设计要比Javascript或Python低一点。
https://stackoverflow.com/questions/74580336
复制相似问题