Ho un programma multithread che stampa sulla console in centinaia di posti. Purtroppo, invece diMake mette thread-safe
Line 2
Line 1
Line 3
ottengo
Line2Line1
Line3
che sto cercando di fare puts
thread-safe.
In Python (che non credo ha questo problema, ma supponiamo che lo ha fatto), lo farei
old_print = print
print_mutex = threading.Lock()
def print(*args, **kwargs):
print_mutex.acquire()
try:
old_print(*args, **kwargs)
finally:
print_mutex.release()
sto provando questo in Ruby,
old_puts = puts
puts_mutex = Mutex.new
def puts(*args)
puts_mutex.synchronize {
old_puts(*args)
}
Ma questo non funziona: "metodo non definito old_puts
"
Come posso rendere thread-safe (ad es. non stampare le linee parziali)?
Suggerimento: quando si esegue 'old_puts = puts' si sta implicitamente facendo' old_puts = puts() ' –