12得票3回答
我该如何匿名声明一个std::thread?

考虑以下简短的程序: #include <thread> int Foo() { while (1); } int main(){ std::thread t(Foo); std::thread s(Foo); // (std::thread(Foo...

12得票4回答
std::promise和std::future存在非明显的生命周期问题

这个问题与此前的一个问题非常相似:pthread_once()中的竞态条件?。本质上是相同的问题:在调用promise::set_value期间结束了一个std::promise(即关联的future已被标记,但还未执行pthread_once)。 所以我知道我的用法存在这个问题,所以我无法...

12得票1回答
在Mac OS X上使用clang创建std :: thread时出错:“尝试使用已删除的函数”

考虑我的测试代码: #include <thread> class Foo { public: void threadFunc() {} void startThread() { _th = std::thread(&Foo::threa...

11得票2回答
当满足某个条件时,告诉std::thread自我终止/停止的方法

假设我有一个工作线程tWorker,当构造Boss时初始化并告诉它执行work(),直到bRetired为真。一个std::mutex, mtx,锁定一些数据(vFiles),以便tWorker在处理它时拥有它。 当bRetired变为true时,如何使tWorker“自杀”?当线程停止执行...

11得票3回答
在C++11中自动调用std::thread退出时的函数

我希望在当前线程退出时自动调用一个函数(或lambda函数),但我无法找到任何与 std::thread 兼容的方法,除非我完全接管线程创建任务或手动确保每个线程调用我始终提供为其最后操作的某个特定函数。 基本上,我想要一个函数,其原型可能类似于:on_thread_exit(const st...

11得票2回答
MinGW和std :: thread

我一直在尝试使用MinGW编译器在Windows上编译和运行以下代码。 #include <iostream> #include <thread> void test() { std::cout << "test" << std::e...

10得票1回答
使用native_handle() + pthread_cancel()取消std::thread

我正在将之前封装在pthread上的线程转换为std::thread。然而,C++11没有任何取消线程的方法。然而,由于它们可能正在执行外部库中的非常耗时的任务,我仍需要取消线程。 我正在考虑使用本机句柄,在我的平台上可以给我pthread_id。我正在Linux(Ubuntu 12.10)...

10得票2回答
在C++11智能指针中存储std::thread

在 C++ 11 及以上版本中,将 std::thread 直接存储为类成员的优缺点是什么: std::thread my_thread; 与将 std::shared_ptr 或 std::unique_ptr 存储到线程中进行对比,如下所示: std::shared_ptr<...

10得票3回答
使用ASIO和std::thread制作C++11应用程序时出现“undefined reference to `pthread_create'”错误

我设置了Eclipse(实际上是基于Eclipse的Xilinx SDK)和g++4.9.2来编译一个使用独立ASIO的项目,并在Properties->C/C++ Build->Settings->Tool Settings->Other flags中使用了-std=c++11,以便可以使用...

10得票2回答
打印std :: this_thread :: get_id()会输出“非执行线程的线程:: id”?

这曾经完美地运行(然后外星人一定黑入了我的电脑):#include <thread> #include <iostream> int main() { std::cout << std::this_thread::get_id() <<...