SDL和C++11线程

3

我正在使用SDL作为库来开发一个C++11应用程序。我计划为我的应用程序添加多线程支持。在我的应用程序中,使用SDL_Thread或std::thread是否有区别?


根据所选择的实现方式,SDL可以使用C++线程,也可以使用目标系统特定的实现,比如pthreads。如果细节对于您的问题非常重要,那么您肯定应该了解SDL和C++都做了什么。SDL可能提供更精细的控制,例如线程堆栈大小(如果它没有使用C++线程作为其线程实现)。 - keltar
1个回答

4
除非您正在使用SDL API的一部分,该API明确需要SDL的线程句柄类型,否则最好使用C++的std::thread。该API更符合惯用法(例如,构造函数允许您将参数转发给启动函数),并且不会将代码与SDL提供的内容绑定在一起。
我提到句柄的原因是,如果您实际上需要传递一个SDL_Thread *,那么没有办法查询当前线程的句柄。尽管std::thread也没有提供此功能,但由于接口更丰富,因此更有意义使用。
编辑:两个接口似乎都大量借鉴了POSIX线程,但有一个例外。 std::thread没有内置的取消函数。通常,您不希望在没有任何清理的情况下杀死线程,但值得一提。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接