Я пишу обертку для C-API с Cython.Цель состоит в том, чтобы создать client
, который подключается к mediator
серверу, используя API.Клиент обрабатывает аудиофайл, разбивает его на пакеты и отправляет их посреднику.Незадолго до отправки аудиопакетов он запускает дополнительный поток для приема входящих пакетов от посредника.Метод API для получения пакетов от посредника вызывается с освобожденным gil no gil
.Тем не менее, после окончания отправки всех исходящих пакетов клиент должен ждать.Он все еще получает пакеты от посредника и должен ждать сообщения 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
.Возможно ли, что эта ошибка связана с другим «потоком»?