Errata


Print Print Icon

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.


Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question



Version Location Description Submitted By
Printed Page 13
5th paragraph

An example would be a sequential program that takes 34 seconds to run on a one-processor machine and 17
seconds to run on a dual-core machine.

Replace quad-core (4) by dual-core (2) because 34 seconds/2 = 17 seconds...

Anonymous 
PDF Page 22
4

Page 22
When explicit synchronization and atomic operations are insufficient, locks needs to
be used.
Should be “When implicit synchronization and… are insufficient”, because locks are explicit synchronization.

Anonymous 
Printed Page 32
Example 3-2

line 4 and 7 of the example are the same.

if(nthread>=1)

Would that mean it is true to initialize and terminate under the same condition?

I am not sure how to correct it or is it wrong in the first place.

Anonymous 
Printed Page 32
Example 3-2

line 4 and 7 of the example are the same.

if(nthread>=1)

Would that mean it is true to initialize and terminate under the same condition?

I am not sure how to correct it or is it wrong in the first place.

Anonymous 
Printed Page 42
5th paragraph

I believe "The left-to-right property allows commutative operations to work, [...]" is meant to read "non-commutative" rather than "commutative."

Anonymous 
Printed Page 49
2nd paragraph in parallel_scan

Should be

y_i = y_{i-1} + X_i

rather than

y_i = y_(i-1) + i

Anonymous 
Printed Page 65
duplication - Parallel Algorithms for Streams

The section below "Parallel Algorithms for Streams" duplicates what was already stated above it. This
makes the reader confused, and seems entirely unnecessary. Please check.

Anonymous 
Printed Page 67
Code listing for Example 4-4

Page 67, Code listing for Example 4-4. The third line reads 'ItemStream stream;', but it should read 'ItemStream stream(root);'.

Dave Elder 
Printed Page 119
code line below "mutex Class"

Two code lines are bound together; should be separate lines.

#include "tbb/mutex.h"
class mutex;

Anonymous 
Printed Page 146
Example 9-5, line starting with "task t_1 = new( c.all"

In this line, the expression "c.allocate_child()" is used, even no variable called 'c' exists. This
should simply be "allocate_child()" because 'this' has been recycled as the continuation.

Anonymous 
Printed Page 150
Example 9-9, line starting with "FibTask& a ="

This example is showing how to recycle 'this' as one of the child tasks, but the task 'this' is supposed
to replace, 'a', is still being allocated. I believe the line starting with "FibTask& a =" should be
commented out in the style used elsewhere in the example, as "// was: FibTask& a =..."

Additionally, several lines below, the call "set_ref_count(2);" should be "c.set_ref_count(2);" because
'c' is the continuation that requires that call and 'this' is now one of the children.

Anonymous 
Printed Page 150
FibTask class definitions

Hello,

I think that both examples on the page 150 ('scheduler bypass' and 'recycling') should have replaced
'set_ref_count(2)' by 'c.set_ref_count(2)' - reference count of the continuation task. Without this fix
both examples run forever.

Also, 'recycling' example should have commented a line:
'FibTask& a = *new( c.allocate_child() ) FibTask(n-2, &c.x);'

Anonymous 
Printed Page 177
3rd paragraph

Book states the following "You can download the source for all examples from this chapter from http://www.threadingbuildingblocks.org/book", but when you go to link page states this "This is the dummy content for book page. this file is named book.php"

So where does one find the exapmles?

The1GordoN 
Printed Page 185
Section on ParallelMerge

The source code of the ParallelMerge example (Example 11-8) is incomplete. The text on p. 186 mentionsa
ParallelMergeBody class that is missing in the source code listing.

The document at http://cache-www.intel.com/cd/00/00/30/11/301114_301114.pdf

seems to have a complete version of the same example.

Anonymous 
Printed Page 261
Box

Refers to lines 12 and 13 in example 11-53. I think 13 and 14 are
what are meant. (I have the July 2007 printing).

Anonymous 
Printed Page 261
Box

Refers to lines 12 and 13 in example 11-53. I think 13 and 14 are
what are meant. (I have the July 2007 printing).

Anonymous 
Printed Page 280
Code listing, includes

Most paths in the book are given in the portable tbb/... (forward slash) notation, as they should be.

On this page, however, includes are in the Windows-specific tbb... (baskslash) notation.

#include "tbb ask_scheduler_init.h"
...

They may occur elsewhere in the book as well.

Anonymous 


"This book is not just a discussion of a C++ template library. It provides a lovely and in-depth overview of much of what we have learned about parallel computing in the last 25 years. It could be a great textbook for a course on parallel programming."
--Dennis Gannon, Science Director, Pervasive Technology Labs at Indiana University, former head of DARPA's High Performance Computing (HPC++) project, and steering committee member of the Global Grid Forum