gpt4 book ai didi

ruby - 使 puts 线程安全

转载 作者:数据小太阳 更新时间:2023-10-29 07:14:11 26 4
gpt4 key购买 nike

我有一个多线程程序,可以在数百个地方打印到控制台。不幸的是,而不是

Line 2
Line 1
Line 3

我明白了

Line2Line1

Line3

我正在尝试使 puts 线程安全。


在 Python 中(我不认为它有这个问题,但假设它有),我会这样做

old_print = print

print_mutex = threading.Lock()

def print(*args, **kwargs):
print_mutex.acquire()
try:
old_print(*args, **kwargs)
finally:
print_mutex.release()

我正在用 Ruby 尝试这个,

old_puts = puts

puts_mutex = Mutex.new

def puts(*args)
puts_mutex.synchronize {
old_puts(*args)
}

但这不起作用:“未定义方法 old_puts


如何使线程安全(即不打印部分行)?

最佳答案

alias old_puts puts

或更现代的方式:

module MyKernel
PutsMutex = Mutex.new
def puts(*)
PutsMutex.synchronize{super}
end
end

module Kernel
prepend MyKernel
end

关于ruby - 使 puts 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228200/

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