C++ 루프에 관한 질문을 부스트.두 개의 스레드를 높이기
나는 할 수있는 한 많은 정보를 조사해 왔으며, 내가하려고하는 것의 어떤 예나 그것이 작동하는 원리를 보지 못했습니다.
저는 C++로 게임을 디자인하는 데 몇 년 동안 노력하고 있습니다. 나는 거친 Input 시스템뿐만 아니라 OpenGL과 AL을 사용하여 출력을위한 게임 로직을위한 핵심 엔진을 얻었습니다. 내가하고 싶은 일은 내 엔진을 시작하는 방법을 파악한 다음 입력 시스템, 그래픽 엔진 및 사운드 시스템을 별도의 스레드로 실행하는 것입니다. 모두 동시에 실행됩니다. 내 스레드 동기화는 다음 단계이지만 스레드를 함께 실행할 수는 없습니다.
boost::thread gTrd(boost::bind(&game::runGraphics, this));
gTrd.join();
boost::thread sTrd(boost::bind(&game::runSound, this));
sTrd.join();
boost::thread iTrd(boost::bind(&game::runInput, this));
iTrd.join();
boost::thread cTrd(boost::bind(&game::runCore, this));
cTrd.join();
그게 내가 지금까지 얻은 것입니다. 문제는 내가 볼 수있는 한 gTrd의 그래픽 엔진이 프로그램을 종료 할 때까지 계속 진행하는 무한 루프를 가지고있어서 빈 화면이 나타나지만 sTrd를 시작하지 않는다는 것입니다.
이론적으로 정의되지 않은 스레드에있는 스레드를 실행할 수 있도록 정확히 필요한 것은 무엇입니까? 또한 메모리 누수 측면에서 내가 알아야 할 잠재적 인 문제는 알아두면 대단합니다.
그것은 보인다'runGraphics','runSound','runInput'는, 등등 동시에 실행되어야하지만 각()'다음을 시작하기 전에 .join'으로 완료 될 때까지 당신을 기다리고 있습니다. 아마도 모든 스레드를 시작한 후에 만'.join() '을 호출하기를 원할 것입니다. –