Назовите Python от C++

Этот тип ситуации является зависящим от реализации, и следовательно это потребует поставщику определенного механизма для захвата. С Microsoft это включит SEH, и *отклоняют, включит сигнал

В целом, хотя ловля исключения Нарушения прав доступа очень плохая идея. Нет почти никакого способа восстановиться с исключения AV, и пытающийся сделать так просто приведет к тяжелее для нахождения ошибок в программе.

7
задан suspectus 19 February 2014 в 14:43
поделиться

2 ответа

Когда вы говорите «до тех пор, пока предыдущий вызов не был завершен, прежде чем функция вызывается снова», я могу только предположить, что у вас есть несколько потоков, вызывающих из C ++ в Python. Python не является потокобезопасным, так что это может привести к сбою!

Прочтите о глобальной блокировке интерпретатора (GIL) в руководстве по Python. Возможно, вам помогут следующие ссылки:

GIL упоминается в Википедии:

5
ответ дан 7 December 2019 в 10:05
поделиться

Спасибо за вашу помощь!

Да, вы правы, есть несколько потоков C. Никогда не думал, что мне понадобится мьютекс для самого интерпретатора - GIL для меня совершенно новая концепция (и ни разу не упоминалась во всем руководстве). Каждый поток создает свою структуру данных, получает блокировку и затем освобождает ее, как показано в справочнике.

Работает так, как должно, но при вызове Py_Finalize () перед завершением процесса я получаю segfault .. любые проблемы, просто оставив его ?

1
ответ дан 7 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: