这是我的回调函数,我将rcv_buffer设置为全局
def rx_callback(ok, payload):
global n_rcvd, n_right, rcv_buffer
n_rcvd += 1
(pktno,) = struct.unpack('!H', payload[0:2])
if ok:
n_right += 1
rcv_buffer.append((pktno, payload))
在main()中,我不断检查缓冲区以查看缓冲区是否为空:
while 1:
while len(rcv_buffer) > 0:
(pktno, payload) = rcv_buffer.pop(0)
print 'pktno = ', pktno, 'payload = ', payload[2:]
但我没有做任何同步!我可以确定列表中的操作不会崩溃吗?谢谢!
答案 0 :(得分:1)
在CPython中,由于执行的解释性质,并且由于Global Interpeter Lock(确保在任何给定时间只执行单个线程中的单个字节码),这是安全的。
其他Python实现可能非常宽容......