微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

新线程导致问题 C++

如何解决新线程导致问题 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 举报,一经查实,本站将立刻删除。