使用 std::thread 或 CreateThread()? [复制]

Posted

技术标签:

【中文标题】使用 std::thread 或 CreateThread()? [复制]【英文标题】:Using std::thread or CreateThread()? [duplicate] 【发布时间】:2016-01-15 22:32:49 【问题描述】:

当我开始使用 C/C++ 编码时开发的项目时,我正在修改我的代码。

这是关于线程的。在我阅读的教程(从 2006 年开始)中,他们说,在为 Windows 开发时,可以使用 CreateThread() 创建线程。使用这个函数比使用 std::thread 更好吗?

它也更快吗?

【问题讨论】:

【参考方案1】:

根据规范,在加载 CRT 的应用程序(大多数 C/C++ 都是)中,您不能使用 CreateThread

可执行文件中调用 C 运行时库 (CRT) 的线程应使用 _beginthreadex and _endthreadex 函数进行线程管理,而不是 CreateThread 和 ExitThread;这需要使用 CRT 的多线程版本。如果使用 CreateThread 创建的线程调用 CRT,CRT 可能会在内存不足的情况下终止进程。

另一方面,std::thread 会做正确的事。

【讨论】:

以上是关于使用 std::thread 或 CreateThread()? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

std::thread::swap 的目的是啥?

具有与 std::thread 不同的线程库的 C++ thread_local

OpenCV 分配导致 std::thread::join 中的段错误

如何在 C++ 中将 std::thread::id 转换为字符串?

如何使用 std::thread?

是否为 C++11 中的信号中断(或信号处理程序)定义了 std::this_thread::sleep_for 行为?