rcvd_msg = None
lock = thread.Condition()
# executed in the main thread
with lock:
while rcvd_msg == None:
lock.wait()
# read rcvd_msg
rcvd_msg = None
lock.notifyAll()
class Listener(ConnectionListener):
def on_message(self, headers, message):
# executed in the receiver thread
global rcvd_msg, lock
with lock:
while rcvd_msg != None:
lock.wait()
rcvd_msg = message
lock.notifyAll()
您所要做的就是对listener类进行一点小小的更改:
在代码中,使用stomp.py:
Stomp.py how to return message from listener-指向stackoverflow类似问题的链接
由于侦听器将在接收方线程中调用,因此如果要在其他线程(例如主线程)中处理消息,则应执行线程切换。
线程切换的一个简单示例是使用一个共享变量,当接收线程接收到消息时锁定并更新该变量。并且,在另一个线程中读取该变量,但您需要使用正确的同步机制,以确保不重写消息,并且不会遇到死锁。
下面的示例代码使用一些带锁的全局变量。
希望能帮上忙!!
相关问题 更多 >
编程相关推荐