使用 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 不同的线程库的 C++ thread_local
OpenCV 分配导致 std::thread::join 中的段错误
如何在 C++ 中将 std::thread::id 转换为字符串?
是否为 C++11 中的信号中断(或信号处理程序)定义了 std::this_thread::sleep_for 行为?