2017-12-12 1 views
0

SDL을 라이브러리로 사용하는 C++ 11에서 응용 프로그램을 개발하고 있습니다. 내 응용 프로그램에 대한 다중 스레드 지원을 추가 할 계획입니다. 내 응용 프로그램에서 SDL_Thread 또는 std :: thread를 사용할 지 여부에 차이가 있습니까?SDL 및 C++ 11 스레드

+0

선택한 구현에 따라 SDL은 pthread와 같은 대상 시스템 특정 구현은 물론 C++ 스레드를 사용할 수 있습니다. 구체적인 사항이 문제에 중요하다면 SDL과 C++이하는 일을 분명히 살펴 봐야합니다. SDL은 아마도 예를 들어 스레드 스택 크기 (* 스레드 구현으로 C++ 스레드를 사용하지 않는 경우 *). – keltar

답변

1

SDL의 스레드 핸들 유형이 특별히 필요한 SDL API의 일부를 사용하지 않는 한 C++의 std::thread을 사용하는 것이 좋습니다. API는 더 관용적입니다 (예 : 함수를 시작하기 위해 인수를 전달할 수있는 생성자). SDL에서 제공하는 코드에 해당 코드를 연결하지 않습니다.

내가 핸들을 언급하는 이유는 실제로 SDL_Thread *을 전달해야 할 경우 현재 스레드의 핸들을 쿼리 할 방법이 없다는 것입니다. 부여 된 std::thread은이 중 하나를 제공하지 않지만 인터페이스가 더 풍부하기 때문에 사용하는 것이 더 합리적입니다.

편집 : 두 인터페이스 모두 POSIX 스레드에서 많이 사용하는 것처럼 보이지만 한 가지 예외가 있습니다. std::thread에 내장 된 취소 기능이 없습니다. 일반적으로 어떤 종류의 정리도없이 스레드를 죽 이길 원하지는 않지만 언급할만한 가치가 있습니다.