【发布时间】:2013-11-13 07:39:31
【问题描述】:
我在 OpenGL 应用程序中使用线程为用户提供外壳。
我的问题是我无法在主循环结束时取消线程,因为 std::thread 没有提供取消方法,并且我的线程被 std::cin >> var 调用阻塞,所以我可以' t 使用布尔值来存储线程应该停止的事实。
我想知道是否有在线程中使用 std::cin 的好方法(std::thread),或替代解决方案。
【问题讨论】:
-
你的话题是分离还是加入
-
无。如果我调用 thread.join() 应用程序将等待线程结束,但线程被 std::cin 调用阻塞。我可能不明白什么是分离线程(像 fork() 那样分离当前进程?)
-
听起来像是join了,在c++11中创建一个线程后,你要么调用join,要么对其进行分离
-
你必须使用
>>阅读吗?异步 io 调用可能会有所帮助(如果没有标准化)。 -
是的,我使用
>>,但我发现了一些东西:当我在我编写的 ThreadClass 的构造函数中分离线程时,我遇到了问题;当我在主循环中分离它时,它会随机工作:如果线程在分离之前开始执行,则它不起作用,否则它会起作用。
标签: c++ multithreading c++11 io stdthread