gpt4 book ai didi

ruby - 这个 ruby​​ 代码线程安全吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:15:36 25 4
gpt4 key购买 nike

这段代码是线程安全的吗?它似乎应该是这样,因为永远不会从多个线程分配@myvar(假设 block 在 < 1 秒内完成)。

但是我是否需要担心第二个 block 在写入时试图读取 @myvar 的情况?

require 'rubygems'
require 'eventmachine'

@myvar = Time.now.to_i

EventMachine.run do

EventMachine.add_periodic_timer(1) do
EventMachine.defer do
@myvar = Time.now.to_i # some calculation and reassign
end
end

EventMachine.add_periodic_timer(0.5) do
puts @myvar
end

end

最佳答案

您的代码正在使用 EventMachine ,它仅将线程用于 IO,并在单个线程中完成所有代码处理。 EventMachine 专为您的目的而设计,因此所有变量访问在设计上都是线程安全的,您的代码中不需要额外的检查。

不仅赋值是安全的(即使它是原子的)而且数据结构的操作也是安全的并且不受竞争条件的影响。

关于ruby - 这个 ruby​​ 代码线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926402/

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