如何解决新线程导致问题 C++
我有一个 void
函数,里面有一个 while (true)
循环,Sleep();
和 std::this_thread::sleep_for(std::chrono::milliseconds());
什么都不做。是的,我知道我的睡眠时间是 毫秒 而不是几秒,通过多线程,我的意思是我已经完成了:
std::thread nThread(Void);
nThread.detach();
基本上我在做什么:
#include <stdio.h>
#include <thread>
void thisisVoid()
{
while (true)
{
printf("Print");
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
int main()
{
std::thread nThread(thisisVoid);
nThread.detach();
}
解决方法
问题不是睡眠。你还没有真正提出问题,但我认为你的意思是如果你不分离,你就会崩溃。
这就是为什么...
C++ 不喜欢你用悬空的线程退出程序。您可以分离它们或加入它们。你的新线程有一个启动时间,如果你只是在底部退出 main,你的第一个线程可能还没有运行。而且还没有被允许清理,因为你没有加入它或分离它。
所以你必须在 main() 中做一个或另一个。如果你加入反对它,你会等到它完成。如果你把它拆开,你甚至可以在他被处决之前退出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。