Есть желание с помощью boost.python сделать библиотеку из C++-ного кода активно использующего boost.asio в асинхронной манере. Стоит ли так делать, с какими проблемами можно столкнуться. В тестовом варианте работает без проблем.
Здравствуйте, savitar, Вы писали:
S>Есть желание с помощью boost.python сделать библиотеку из C++-ного кода активно использующего boost.asio в асинхронной манере. Стоит ли так делать, с какими проблемами можно столкнуться. В тестовом варианте работает без проблем.
Если асинхронно будет крутится только C++ код проблем не будет. Если же нужны обратные вызовы то придется внимательно следить за GIL
http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, savitar, Вы писали:
S>>Есть желание с помощью boost.python сделать библиотеку из C++-ного кода активно использующего boost.asio в асинхронной манере. Стоит ли так делать, с какими проблемами можно столкнуться. В тестовом варианте работает без проблем.
FR>Если асинхронно будет крутится только C++ код проблем не будет. Если же нужны обратные вызовы то придется внимательно следить за GIL http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock
Правильно я понимаю, что если программа на Python однопоточная и при этом io_service::run() вызван единожды из единственного питоновского потока, то указанных проблем не будет?
Здравствуйте, savitar, Вы писали:
S>Есть желание с помощью boost.python сделать библиотеку из C++-ного кода активно использующего boost.asio в асинхронной манере. Стоит ли так делать, с какими проблемами можно столкнуться. В тестовом варианте работает без проблем.
В питон 3.2 обещают
http://docs.python.org/dev/py3k/whatsnew/3.2.html#multi-threading существенные изменения в GIL которые как раз
улучшат работу с асинхронными вещами, подробнее
http://www.dabeaz.com/python/NewGIL.pdf