203得票6回答
我什么时候应该使用std::thread::detach?

有时我需要使用std::thread来加快我的应用程序。我也知道join()会等待线程完成。这很容易理解,但是调用detach()和不调用它有什么区别呢? 我认为如果没有detach(),线程的方法将独立地使用一个线程。 不分离: void Someclass::Somefunction...

197得票12回答
C++11中的线程池

相关问题: 关于C++11: C++11: std::thread pooled? async(launch::async)在C++11中是否会使线程池成为过时的方法,以避免昂贵的线程创建? 关于Boost: C++ boost thread如何重用线程? boost::thre...

195得票7回答
当main()函数退出时,一个已分离的线程会发生什么?

假设我启动了一个 std::thread 并将其 detach(),因此即使原先表示它的 std::thread 超出作用域,该线程仍然继续执行。 进一步假设程序没有可靠的协议来加入已分离的线程1,因此当 main() 退出时,已分离的线程仍在运行。 我在标准(更确切地说是 N3797 C...

124得票9回答
如何检查std::thread是否仍在运行?

如何以跨平台的方式检查std::thread是否仍在运行?timed_join()方法缺失,joinable()并不适用于此。 我考虑在线程中使用std::lock_guard锁住互斥量,并使用互斥量的try_lock()方法来确定它是否已被锁定(线程正在运行),但这似乎过于复杂。 你知道...

114得票11回答
如何在C++11中获取整数线程ID

c++11提供了获取当前线程ID的可能性,但它不能转换为整数类型:cout<<std::this_thread::get_id()<<endl; 输出:139918771783456cout<<(uint64_t)std::this_thread::get_...

110得票4回答
在C++11中将对象通过引用传递给std::thread

为什么在创建 std::thread 时不能通过引用传递对象? 例如,以下代码片段会导致编译错误:#include <iostream> #include <thread> using namespace std; static void SimpleThread...

82得票6回答
C++11中设置std::thread优先级的便携式方法

在C++11后的世界中,设置std::thread实例优先级的正确方式是什么? 有没有一种可移植的方法,在Windows和POSIX(Linux)环境中至少能够工作? 还是说这是获取句柄并使用特定操作系统可用的任何本机调用的问题?

52得票4回答
C++11:std::thread是否支持线程池?

在C++03中,我使用自己构建的线程池和pthread一起工作,这样可以保持几个线程始终运行(因为pthread_create很慢),这样我就能够启动小任务的线程而不必考虑性能问题。 现在,在C++11中,我们有了std::thread。我想标准没有关于具体实现的说明,所以我的问题是关于标准...

49得票3回答
由std::async使用std::launch::async参数启动的线程引发的困惑

我对std::async函数有点困惑。 规范说明: 异步操作的执行方式“好像在新的执行线程中”(C++11 §30.6.8/11)。 那么这究竟是什么意思呢? 在我看来,代码std::future<double> fut = std::async(std::launch::as...

39得票3回答
指针和引用作为线程参数的区别

这是一个例子:#include<iostream> #include<thread> using namespace std; void f1(double& ret) { ret=5.; } void f2(double* ret) { *re...