私は測定装置に話しかけています。私は基本的にコマンドを送信し、応答を受け取ります。ただしask
、コマンドを送信して回答を読み返すメソッドを提供しています。このメソッドをロックすると、呼び出されたメソッドread
とwrite
ロックが原因でデッドロックが発生します。ロックしないと、別のスレッドが答えを盗んだり、読んでいる前に書いたりする可能性があります。これをどのように実装しますか?
import threading
class Device(object):
lock = threading.Lock()
def ask(self, value):
# can't use lock here would block
self.write(value) # another thread could start reading the answer
return self.read()
def read(self):
with self.lock:
# read values from device
def write(self, value):
with self.lock:
# send command to device