4

How do I run C++ and Boost::Python code in parallel without problems?

Eg in my game I'd want to execute Python code in parallel with C++ code; if the embedded Python interpreter's code executes a blocking loop, like while(True): pass, the C++ code would still be running and processing frames to render with its own loop.

I tried with boost::thread and std::thread but unless I joined these threads with the main thread the program would crash...

Any suggestions or examples?

UberLambda
  • 63
  • 11

2 Answers2

2

Your idea to use a second thread for the Python interpreter should just work. Make sure you use the PyGILState_Ensure/Release mechanisms everywhere you wish to run code that will invoke any Python or Boost::Python code. You have more details on this other SO thread here.

Community
  • 1
  • 1
André Anjos
  • 4,641
  • 2
  • 27
  • 34
0

You need to use the multiprocessing module in python so that you get a separate GIL for each python thread.

Paul Evans
  • 27,315
  • 3
  • 37
  • 54