使用time.sleep()的while循环会导致“双重释放或损坏”

时间:2019-09-24 10:46:35

标签: python while-loop cython sleep

我正在用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。该错误是否可能与另一个“线程”有关?

0 个答案:

没有答案