37得票4回答
使用std::lock(c++11)会导致巨大的CPU负载

我最近实现线程/互斥量管理器的努力导致CPU负载达到了75%(4核),而所有四个运行的线程都处于睡眠或等待互斥量被解锁状态。具体的类过于庞大,难以在此完全发布,但我可以将原因缩小到安全获取两个互斥量造成死锁。std::unique_lock<std::mutex> lock1( m...

37得票3回答
C++11:如果不调用std::thread的join()会发生什么?

给出以下内容:void test() { std::chrono::seconds dura( 20 ); std::this_thread::sleep_for( dura ); } int main() { std::thread th1(test); std::chr...

34得票2回答
std::thread传递引用时调用复制构造函数

我有一个使用std::thread传递数据的问题。我认为我理解了复制构造函数等的一般语义,但似乎我还没有完全掌握这个问题。我有一个简单的名为Log的类,已经隐藏了它的复制构造函数:class Log { public: Log(const char filename[], const ...

30得票2回答
如何使用线程对象结束一个std::thread线程?

可能是重复问题: C++0x线程中断 我正在尝试通过使用其线程对象来停止c++ std::thread的执行。 我们该如何做到这一点?

29得票4回答
C++标准库中的独立std::线程向量

我正在开发一个实时软件,其中有一个主要的无限循环在main()中,并使用线程来读取和处理数据。 其中一个问题是如何保持正在运行的线程的std::vector以向它们发送信号并监视执行。因此,我编写了以下代码:#include <iostream> #include <stri...

29得票3回答
如何在c++中将std::thread::id转换为字符串?

如何在C++中将 std::thread::id 转换为字符串?我试图将由 std::this_thread::get_id() 生成的输出转换为字符串或字符数组。

26得票5回答
使用VS2012 RC,如果在main()退出后调用std::thread::join()会导致程序挂起

如果使用Clang 3.2或者GCC 4.7在Ubuntu 12.04上编译,下面的示例代码可以成功运行(即不会卡住),但是如果使用VS11 Beta或者VS2012 RC编译,则会卡住。 #include <iostream> #include <string> #...

26得票4回答
能否定义一个 std::thread 并在稍后初始化它?

我的目标是将一个std::thread对象作为数据成员,并在需要时初始化它。 就像下面的代码一样,我无法做到这一点,因为std::thread类的复制构造函数被删除了。还有其他方法可以实现吗?class MyClass { public: MyClass():DiskJ...

25得票2回答
何时使用std::promise而不是其他std::thread机制是个好主意?

我正在尝试建立一些启发式方法,以帮助我决定应该使用哪个适当的std :: thread类。 据我所知,从最高级别(最简单但最不灵活)到最低级别,我们有: std::async with/std::future (std::shared_future) (当您想要在一次性可抛弃的生产者线程...

21得票3回答
如何从另一个线程中暂停(和恢复)'std::thread'?

我对std::thread还不熟悉。我需要从另一个线程中让一个std::thread休眠,这是否可能?在示例中,我只看到像这样的代码: std::this_thread::sleep_for(std::chrono::seconds(1)); 但是我想做的是类似这样的事情: std::...