擅长:python、mysql、java
<p>由于侦听器将在接收方线程中调用,因此如果要在其他线程(例如主线程)中处理消息,则应执行线程切换。</p>
<p>线程切换的一个简单示例是使用一个共享变量,当接收线程接收到消息时锁定并更新该变量。并且,在另一个线程中读取该变量,但您需要使用正确的同步机制,以确保不重写消息,并且不会遇到死锁。</p>
<p>下面的示例代码使用一些带锁的全局变量。</p>
<pre><code>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()
</code></pre>
<p>希望能帮上忙!!</p>