我正在用C ++ 11开发一个使用SDL作为库的应用程序。我打算为我的应用添加多线程支持。在我的应用程序中是否使用SDL_Thread或std :: thread有什么区别吗?
答案 0 :(得分:2)
除非您使用特定需要SDL的线程句柄类型的SDL API的一部分,否则最好使用C ++的std::thread
。 API更具惯用性(例如构造函数允许您转发参数以启动函数),并且不会将该代码与SDL提供的内容联系起来。
我提到句柄的原因是,如果您确实需要传递SDL_Thread *
,则无法查询当前线程的句柄。授予std::thread
也不提供此功能,但由于界面更丰富,因此使用起来更有意义。
编辑:两个接口似乎都大量使用POSIX线程,但有一个例外。 std::thread
没有内置的取消功能。通常情况下,你不想在没有任何清理的情况下杀死一个线程,但值得一提。