问题标签 [tbb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asynchronous - 将 TBB 用于非并行任务
我想使用 TBB 获得线程池行为。但是每当我阅读有关 TBB 的文档时,他们总是谈论并行,并行执行等。相比之下,我需要一个主线程来将任务分配给线程池,以便这些任务将“自行”执行 - 执行任务异步。这里的任务可以是 GUI 的事件处理。
TBB 任务调度程序是否适合这种行为?我从任务调度程序中得到的印象是,只有当我有可以分解并相互并行执行的任务时,它才是有益的。
c++ - 本地工作队列与英特尔 TBB
我们正在考虑C/C++
使用哪个并行框架。我们有一些非常特殊的条件并且不能 100% 确定,例如TBB
可以添加“更多”的东西。
- 有正在
N
运行的线程和一个同步的工作队列(使用pthread
互斥锁)。 - 我们的工作是优先的(
int
)。 - 作业被放入队列中,空闲线程接受具有最高优先级的作业。
如此重复直到队列为空。
好吧,现在,我想知道从算法的角度来看,像TBB
(线程构建块)这样的框架是否可以为这种特殊场景提供更多?(所以,内部...)
block - 没有让 TBB 编译测试示例
我没有让 TBB 工作。我正在按照“入门”文档中的步骤进行操作。
我正在执行以下步骤:
- 下载linux文件+源文件。
- 将它们提取到 1 个目录中
- 调用 make
- 去 tbb.../bin 调用 source tbbvars.sh intel64
- 转到示例/Getting_started/sub_string_finder
- 调用 make
然后我得到错误:
我真的用谷歌搜索了很多,但找不到任何相关的东西。
我也尝试添加一些 -I 声明,但它没有帮助
我认为这是一种包含/链接问题,但我不知道如何解决。
这一切都是在fedora 16 64bit 上完成的。(内核 3.1.4) // 待定版本 4.0
c++ - tbb::cache_aligned_allocator:使用 __m128i 获取“对成员的请求......非类类型”。用户错误或错误?
我正在尝试使用 __m128i 作为 GCC 的缓存对齐向量的值类型,但出现以下错误:
/usr/include/tbb/cache_aligned_allocator.h:105:32: 错误:请求成员 '~tbb::cache_aligned_allocator<__vector(2) long long int>::value_type' in '* p', 这是非类类型 'tbb::cache_aligned_allocator<__vector(2) long long int>::value_type {aka __vector(2) long long int}'</p>
编译器将其跟踪到 tbb/cache_aligned_allocator.h 中的以下行:
以下是触发编译器错误的代码:
根据Debian版本,我的GCC版本是4.6.1-2,我的TBB版本是3.0+r147-1。这是线程构建块中的错误,还是我滥用了某些东西?
c++ - 共享指针和多线程
我现在一直在使用以下代码进行相当多的测试并且没有遇到任何问题,但是我刚刚意识到代码可能不是线程安全的并导致竞争条件。
我的问题是关于标记线的,因为我认为在共享指针的复制构造过程中,由于引用计数的增加可能会发生竞争条件。
虽然我可以通过引用捕获指针并直接使用它来避免这种情况,但我仍然对解决方案感兴趣。
c++ - 使用 TBB 的非常基本的 for 循环
我是一个非常新的程序员,我对 intel 的例子有些麻烦。我认为如果我能看到最基本的可能循环是如何在 tbb 中实现的,那将会很有帮助。
这是我用来解交错音频数据的循环。这个循环会从 tbb 中受益吗?你将如何实施它?
c++ - boost 或 C++11 是否具有与 tbb::queuing_mutex 和 tbb::spin_mutex 相同的互斥锁?
只是想知道 boost 或 C++11 是否具有与tbb::queuing_mutex
and相同的互斥锁tbb::spin_mutex
?
tbb - 在 MinGW 下构建/链接到 TBB
我正在 MinGW32(在 Windows 7 64 位上)下构建 TBB 并成功地将一个简单的程序链接到它。不幸的是,我的同事无法成功进行链接。我们都运行相同版本的 Windows,相同版本的 MinGW (mingw-get-inst-20110802),并试图编译完全相同的代码。我们的 PATH 环境变量完全相同(.:/usr/local/bin:/mingw/bin:/bin)。然而,尽管一切都是平等的(据我所知),我可以成功地构建和运行程序,但我的同事尝试在链接步骤中失败了。如果我给他我的 tbb.dll,那么他就可以成功链接他的程序。因此,我被引导相信他的 tbb.dll 构建有问题。我们已经确认(使用文件)我们正在为所有目标文件和库生成 32 位二进制文件
我们用来构建 TBB 的命令行是:
我们正在编译的简单测试程序是:
我们用来构建简单测试程序的命令行
就我而言,它完美地构建和链接。在他的情况下,他收到错误消息:
该消息似乎表明链接器在查找符号 tbb::task_scheduler_init::initialize() 和 tbb_task_schedule_init::terminate() 时遇到问题。然而,这两个符号都存在于 tbb.dll 中(下面的 nm 输出对于他和我来说都是相同的):
任何人都可以提供任何建议,说明为什么我能够构建和链接这个简单的示例,当我的同事无法链接时,尽管我们使用相同的工具、二进制文件、源代码、操作系统等?
c++ - tbb::concurrent_hash_map - 需要帮助开始
我正在尝试开始使用 TBB。
我想实现一个并发哈希映射(concurrent_hash_map)
它应该用一个 long int 键控并返回一个 char*...
这是我到目前为止的代码:
请记住,我对 C++ 很陌生……我已经为此苦苦挣扎了一个多小时。我已阅读以下链接:
http://www.devx.com/cplus/Article/33334/1763/page/2
有人可以指出我正确的方向吗?
我从文档中得到了这个例子:
[编辑:作者的解决方案作为社区 wiki 答案移出]
c++ - 并发工厂/享元与 TBB
我有一个连续工作的享元模式,工厂std::map
用来存储和提供对创建对象的访问。工厂返回iterator
指向地图中对象的一个。工厂中的对象是常量,因此一旦插入它们就不会更新,除非它们被擦除。
我想让工厂同时使用tbb::concurrent_hash_map
,但我不确定返回应该是什么。我可以使用iterator
(应该是const_iterator
?),但是文档说,当afind
或insert
. concurrent_hash_map
所以我可以使用 aconst_accessor
因为只需要只读访问,但这与串行实现(iterator
vs accessor
)不同。
哪个更好用?类型的一致性(即两个迭代器)是否重要?串行和线程编译时选项都需要在那里。