std::线程与 tbb - 使用 2 个或更少的参数构建
std::thread with tbb - builds with 2 or fewer arguments
我查看了线程构建块(分形.cpp)中包含的分形示例,并提出了这个结构。 奇怪的是 - 如果我只在函数中传递 2 个参数,这就可以工作。 如果我将其增加到三个参数,则无法编译。 我怀疑它在原始情况下也应该失败 - 但它没有。 为什么它不会只用 2 个参数失败? 或者如何让它使用 3 个参数?
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <tbb/compat/thread>
void tt(int, int); //, int) ;//fails if 3rd int added
int main(int argc, char** argv) {
int numthreads = 4 ;
int inta = 0 ;
int intb = 1 ;
std::vector <std::thread *> mythreads(numthreads) ;
int ic ;
for (ic = 0; ic < numthreads-1 ; ++ic)
{
mythreads[ic] = new std::thread(tt,ic, inta) ; // , intb ) ;
}
tt(ic, inta) ; //, intb) ;
for (int ic = 0 ; ic < numthreads-1 ; ++ic)
mythreads[ic]->join() ;
std::cout << "all done" << std::endl ;
}
void tt( int myid, int intb) // , int intc)
{
std::cout << "entry " << myid << std::endl ;
}'
因为来自 TBB 的 std::thread
构造函数只有 0、1 和 2 个参数函数的构造函数(参见 tbb/compat/thread 标头),它不像 c++11 那样可变std::thread
相关文章:
- 调试模板时出现问题.专门针对 Linux GCC 7、GCC 6、GCC 5、GCC 4.9 错误构建失败:模板参数 1
- 我可以使用宏自动构建参数列表吗?
- 从函数的可变参数构建特定元组
- 发生 Qt5.11 应用插件构建错误:信号和插槽参数不兼容
- Bazel 构建命令行将 copt 参数传递给特定的 cc_library/cc_binary?
- xgboost 构建错误:参数包未扩展为"..":
- 动态构建模板参数包
- 在构建时指定模板参数
- 在构建过程中捕获所有编译器调用和命令行参数
- 是否可以使用多个参数构建类的构造函数
- 检查父构建器是否具有参数
- Libace相关的clang构建错误`提供的参数很少为功能型宏调用`
- 使用可变参数模板构建函数参数
- 通过转发构造函数参数来构建基于可变参数模板的 mixin
- Eclipse 强制将 -k 添加到C++构建命令参数中
- 何时是函数参数并返回构建值
- 使用 std::string 参数和不可移动/可复制参数构建 std::map
- 使用可变参数模板参数构建枚举
- range -for语句不能使用数组函数参数构建范围表达式
- std::线程与 tbb - 使用 2 个或更少的参数构建