Intel® Threading Building Blocks

Avoid "pauses" in game loop


   I've got an existing game engine that uses TBB

  What I'm trying to work around is that if too many tasks are spawned it hitches. 

Anyway the general layout is like this:

1. main loop: spawns a few tasks using task_group, then calls wait()

2. one of these tasks spawned in the task_group contains a flow graph, the graph is executed. 

is it reasonable to use thread_bound_filter

The use case is:

  There are global shared buffer among different stages, and I employ flag array to control accesses  to these buffers from different stages, which are usually the fi and fi+1 (producer and consumer)。

  tbb::atomic<int> BufIsFull[N];

tbb::atomic<unsinged int> WriteToBufNum, ReadToBufNum;

  Now, because the filter(serial) can be executed by different threads on different items, so I  have to make these flag array and index variable to these array are tbb::atomic(WriteToBufNum, ReadToBufNum).

how to install? how to use concurrent_bounded_queue under Windows / VS2012?

I'm completely newbie to TBB, i want to use "concurrent_bounded_queue" in my application (i do not plan to use any other parts of TBB if this matters)

I've downloaded and extracted TBB, now I have tbb43_20140724oss folder on my PC.

What next steps should I do to use "concurrent_bounded_queue"  from VS2012 (MS VC++ compiler)?

problem about concurrent_priority_queue order

I want use TBB concurrent_priority_queue in my program. so I did some tests
insert 6 elements with different priority into queue.
job priority
job0   2
job1   0
job2   1
job3   0
job4   2
job5   1

when pop them one by one, The result is supposed to be job1 3 2 5 0 4. the actual result is 1 3 5 2 0 4
two of them seems not follow FIFO rules. same result in many times test.

Serial vs Parallel with hashmap & pipeline: discrepancy

Dear all,

I'm porting another simple I/O intensive piece of code to TBB, but my two versions differ hugely in their results. The serial version uses a unordered_map of strings to ints, and the parallel one accordingly uses a concurrent_hash_map. The pipeline reads strings, and counts them concurrently, as you will see, making use of std::atomic.

The serial code is as follows:

tbbmalloc privatizePublicFreeList appears to have an inifinte loop bug


One of our customers is hitting a deadlock condition in our application where a lock is being held forever by one of our application threads.  I have taken a memory dump of the application while deadlocked, and I believe I have traced the problem to an infinite loop in the tbbmalloc dll.  Here is the stack trace:

New Book, features TBB: Multithreading for Visual Effects

I have a copy of my latest book (with 6 wonderful co-authors)!  Based on the SIGGRAPH tutorial we did last year, it reviews successful techniques for parallel programming in applications doing visual effects (think: animated movies!)  The most referenced technique is TBB although other methods including OpenCL are also discussed.

Recursive depth-first TBB usage?

I have a vector of objects on which I need to run a function in parallel. Each task involves a recursive octree traversal, and I'm curious if there is a better way to organize my TBB usage to get more optimum depth-first parallel traversal.

Right now each tree node uses a blocked range parallel_for to start the recursion into each tree. Each of the function calls that kick off the tree-traversals are also called using a blocked range parallel_for.

Subscribe to Intel® Threading Building Blocks