Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 而与时间循环。sleep()导致;“双重自由或腐败”;_Python_While Loop_Cython_Sleep - Fatal编程技术网

Python 而与时间循环。sleep()导致;“双重自由或腐败”;

Python 而与时间循环。sleep()导致;“双重自由或腐败”;,python,while-loop,cython,sleep,Python,While Loop,Cython,Sleep,我是一个用Cython为C-API编写包装器的人。目标是构建一个客户端,它使用API连接到中介服务器。客户端处理一个音频文件,将其拆分为包并将其发送给中介。在发送音频数据包之前,他启动一个额外的线程来接收来自中介的传入数据包。使用释放的gilno-gil调用从中介接收数据包的API方法。然而,在完成发送所有传出数据包之后,客户端必须等待。他仍在接收来自中介的数据包,必须等待中介部分的done消息。只有这样,他才能与调解人断绝关系 DO STUFF ... t = threading.Thread

我是一个用Cython为C-API编写包装器的人。目标是构建一个
客户端
,它使用API连接到
中介
服务器。客户端处理一个音频文件,将其拆分为包并将其发送给中介。在发送音频数据包之前,他启动一个额外的线程来接收来自中介的传入数据包。使用释放的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()

要断开用户_数据的连接,在接收到最后一个数据包后,必须将“继续”值设置为0。
我现在遇到的问题是
time.sleep()
会导致
双重释放或损坏(fasttop)中止。这个错误是否可能与另一个“线程”有关?

我不认为
sleep()
调用导致了双自由度-它可能是由于时间/竞争问题而被发现的。您是否尝试过使用
gdb
或类似工具进行调试?您正在包装的API是什么?是:
时间。睡眠不太可能导致双重免费。如果这种情况一直发生,您可以很容易地删除(或不启动)另一个线程,并找到答案。嘿,如果我注释掉sleep(),它会起作用,但我不明白为什么。。我还没有调试它。API是您确定要包装的API是线程安全的吗?他们在文档中描述了示例客户机在C中的一个实现,该实现也使用了两个线程。虽然我关闭了开始接收和仍然得到流产错误。你说得对。错误不是由时间引起的。sleep()。cython编译器生成的c文件抛出错误。我必须让调试器运行。谢谢你的帮助