Имам C++ програма, която използва C api, за да използва моя Python библиотека. И библиотеката на Python, И кодът на C++ са многонишкови.
По-специално, една нишка от програмата на C++ инстанцира обект на Python, който наследява от threading.Thread
. Имам нужда от всички мои C++ нишки, за да мога да извиквам методи на този обект.
Още от първите ми опити (наивно просто инстанцирам обекта от основната нишка, след това изчакам известно време, след което извиквам метода) забелязах, че изпълнението на нишката на Python, свързана с току-що създадения обект, спира веднага след като изпълнението се върне към програмата C++.
Ако изпълнението остане с Python (например, ако извикам PyRun_SimpleString("time.sleep(5)");
), изпълнението на нишката на Python продължава във фонов режим и всичко работи добре, докато чакането приключи и изпълнението се върне към C++.
Явно правя нещо нередно. Какво трябва да направя, за да направя и моите C++ и Python многонишкови и способни да работят добре един с друг? Нямам предишен опит в областта, така че, моля, не предполагайте нищо!