创建可变数量的std::线程
Create variable number of std::threads
我有一个线程程序,必须在多台计算机上运行。它们中的每一个都有不同数量的受支持线程。在我开发程序的计算机中有4个线程,所以我硬编码了4个要创建的线程。我想根据情况而有所不同。我想使用std::thread::hardware_concurrency来获取线程数,并将工作划分为可用的线程数。这可能吗?
硬编码线程创建是:
//const unsigned int SIZE = std::thread::hardware_concurrency ;
const unsigned int SIZE = 4 ;
void zeroOut(std::vector<obj> vec , int start , int end)
{
// Does an operation on vec from start index to end index
}
int main() {
std::vector<obj_thread> vec ;
// Do some work on vec. Fill it with values.
unsigned int step = vec.size()/SIZE;
std::thread thread1(zeroOut,vec,step,step*2);
std::thread thread2(zeroOut,vec,step*2,step*3);
std::thread thread3(zeroOut,vec,step*3,step*4);
zeroOut(vec, 0 , step);
thread1.join();
thread2.join();
thread3.join();
return 0 ;
}
我正在考虑使用std::vector,但我是多线程编程的新手,不知道怎么做
谢谢你抽出时间。
这可能吗?
是的。
我正在考虑使用std::vector
好主意。这正是我建议你使用的。向量中的线程数在运行时可能会有所不同。
但我是多线程编程的新手,不知道怎么做。
只使用创建其他线程的原始主线程中的线程向量。由于您在单线程中使用向量,因此它的使用与在单线程程序中使用向量没有任何不同。
相关文章:
- 即发即弃 std::线程对象清理自身
- std::线程导致程序中止
- 在std::线程中使用已分配的结构数据
- 使用-static libstdc++时std::线程弱,因此在运行时会导致崩溃
- std::线程与 pthread_setschedparam 与 C++ 11.
- 运行 std::线程不在构造函数中
- C++ std::线程调用方法,从对象原因到调用此类的析构函数
- 编译问题 C++ 同时,尝试通过调用另一个对象中的成员函数来创建 std:: 线程
- 错误:静态断言失败:std ::线程参数必须在转换为rvalues后不可行
- C STD ::线程中的种族状况或内存损坏
- 在 Valgrind 输出中仍然可以访问 std 线程向量的块
- 将类Cotaining std ::线程添加到向量
- 如何使用mingw编译C STD ::线程代码
- 从其他std ::线程更新QT GUI
- STD ::线程不会退出
- 处理 std::线程包装器类的立即销毁
- C++ std 线程并列出分段错误(核心转储)
- 杀死后的STD ::线程如何处理
- 干净取消在输入/输出调用中被阻止的 std::线程
- std ::线程最大并发线程