C++中的多线程while循环
我已经开始使用 c++(来自 ac# 背景),并且在我的程序中我需要运行一个 while true 循环,但是由于它是一个 imgui 程序,ui 完全冻结,因为我Sleep()
在循环中使用。我需要创建一个新线程,但我在网上找到的所有内容都只是
std::thread nThread(Method);
nThread.join();
现在,问题在于它根本不起作用,因为我假设这是一个始终在运行的 while 循环。我想在 C# 中做 C++ 等效的Thread thread = new Thread(method)
和thread.Start();
。如果有人可以帮助我,我将不胜感激。
回答
t.join()
等待线程t
死亡。如果您不希望启动线程的方法等待它,那就不要join()
它。
但请注意!如果您允许在线程仍在运行时销毁线程对象,C++ 库会生您的气。(析构函数会抛出异常。)如果你想告诉库,“闭嘴!我知道我在做什么”,你可以从对象中分离线程。但通常情况下,如果您可以安排对象在需要线程运行时一直存活,那么它的设计会更简洁。