gpt4 book ai didi

ruby - 运行线程数组的观察者

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:07 26 4
gpt4 key购买 nike

我有像 ['a'=> false, 'b' => false, 'c' => false 这样的哈希结构,……]。我的条件是:

  • 我正在为每个元素使用多线程,并运行一些代码根据特定条件将“false”变为 true。
  • 此循环将一直持续到所有元素的值变为“真”或某个“超时”为止。
  • 我想要一个观察器,它应该在每个循环中收集那些值变为“真”的键,因为我正在为这些“真”值元素运行另一个代码。

但是,我正在编写的代码没有 ruby​​-ism。感觉就像在写java代码。请帮助我的 ruby​​-ism 方法。

最佳答案

这是显示从 active_support 中提取的两个哈希值之间差异的代码。

# from https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/hash/diff.rb
def hash_diff(h1, h2)
h1.dup.delete_if { |k, v| h2[k] == v }.merge!(h2.dup.delete_if { |k, v| h1.has_key?(k) })
end

现在您可以使用以下方法来检测循环的每次迭代之间的差异:

previous ||= my_hash
diff = hash_diff(my_hash, previous)
puts "Difference: #{diff.inspect}" unless diff.keys.empty?
previous = my_hash

请注意,您可能必须为此代码使用互斥体以避免竞争条件和其他讨厌的错误。

关于ruby - 运行线程数组的观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170521/

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