我是英特尔 TBB 的新手。我正在使用 concurrent_queue 以在我的项目中实现细粒度的并行性。我有几个疑问。这就是我正在实施的方式。
thread_fun(arguments) {
while(concurrent_queue.try_pop(v))
operation on v; //each thread executes its own operation(seperate v for each thread)
}
main() {
for(..)
concurrent_queue.push(); //fill the queue
_beginthreadex(..); //create 8 win32 threads and pass concurrent_queue as an argument
}
我明确提到了线程数。我读到 TBB 将根据处理器核心数创建线程。我怎样才能做到这一点?这样我就不需要使用 _beginthreadex 函数显式创建线程了吗?
我是否通过使用 concurrent_queue 来实现细粒度的并行性?
任务级并行性是什么意思?您如何使用 intel tbb 实现任务级并行性?我正在从队列中弹出元素。弹出操作是否被视为一项任务?这意味着,所有弹出操作都被视为不同的任务。我一次用 8 个线程弹出 8 个元素。这意味着,我正在实现任务级别的并行性。我对么?
如果我将四核处理器上的线程数增加到 32(支持 8 个线程),concurrent_queue 是如何工作的?队列上只有8个线程并发执行还是总共32个线程并发执行?
请帮我。