我正在用Cython编写C-API的包装。目标是建立一个client
,该API使用API连接到mediator
服务器。客户端处理音频文件,将其拆分为包,然后将其发送给中介。在发送音频数据包之前不久,他启动了另一个线程来接收来自中介程序的传入数据包。使用发布的gil no gil
调用用于从中介程序接收数据包的API方法。但是,在完成发送所有传出数据包后,客户端必须等待。他仍在从中介程序接收数据包,并且必须等待中介程序部分的done
消息。只有这样,他才可以与调解员断开连接。
DO STUFF
...
t = threading.Thread(target=_recv_thread, args=(user_data,))
t.start()
...
send_audio_packets()
while True:
if user_data.proceed is 1:
print("Still waiting")
time.sleep(2)
else:
disconnect()
要断开user_data.proceed值,必须在接收到最后一个数据包后将其设置为0。
我现在遇到的问题是time.sleep()
导致double free or corruption (fasttop) Aborted
。该错误是否可能与另一个“线程”有关?