同步两个发送者和接收者线程

时间:2018-05-19 14:10:49

标签: multithreading thread-synchronization

我有以下问题,我有2个发送者,彼此发送一个,并且只有在其中2个发送了消息后,我希望接收者开始接收然后等待接下来的两个发送,例如 S1 S2 录音 S1 S2 Rec ...

semOne = threading.Semaphore(value = 1)
semTwo = threading.Semaphore(value = 0)
semRecNotify = threading.Semaphore(value = 0)

def senderOne():
    while True:
        semOne.acquire()
        print("Sender One")
        semTwo.release()

def senderTwo():
    while True:
        semTwo.acquire()
        print("Sender Two")
        semOne.release()
        semRecNotify.release()

def receiver():
    while True:
        semRecNotify.acquire()
        print("Receiver")  

使用semOnesemTwo,我设法同步2个发件人并使用semRecNotify我尝试过(失败)确保我们只在连续2次发送后才进入接收器。我无法获得想要的功能。

请注意,这不是语言特定的问题,我只是想了解自己如何正确使用信号量进行同步。 是否有更一般/数学方法来解决这个问题?

0 个答案:

没有答案