Errata to be fixed in first reprinting of C++NPv2 (+ means need a new page generated for next printing) . Page xvi: added Ma Weida to the reviewers list. . Page xvii: "Helen Gill" has an extraneous ", Inc.)" after "(NSF)". . Page 44, code line 9: there should be quotes around "e:i:". . Page 44, Example line 12 should be "case 'e':" instead of "'e':" line 14 should be "case 'i':" instead of "'i':" . Page 45, Sidebar 6, it mentions that ACE_Thread_Manager::wait() uses relative timeout, but actually it uses absolute timeout. . Page 63: The last sentence refers to removing an event handler before it expires. It should be "...remove a particular timer event before it expires." . Page 95, Sidebar 23, 2nd bullet: "blocked awaiting" should be "blocked waiting". . Page 108, adjusted code alignment in Quit_Handler constructor. . Page 128, Figure 5.4: ACE_Service_Type::suspend() and resume() return int. . Page 147, code line 6: should be 6 ACE_STATIC_SVC_REGISTER (Reporter_Descriptor); . Page 167: "-uscore" in Sidebar 41 title should be an underscore. . Page 171: The method virtual int send (ACE_Message_Block *chunk[], size_t count); should be virtual int send (ACE_Message_Block *chunk[], size_t &count); . Page 198, Lines 4-7 description: member variable referred to should be "queued_count_" instead of "queue_count_". . Page 199, Lines 8-12 description: member variable referred to should be "queued_count_" instead of "queue_count_". . Page 223. Figure 7.6 "TCP logging acceptor" and "TCP logging handler" should be read as "TPC logging acceptor" and "TPC logging handler". . Page 238: Reference to Figure 6.4 should be Figure 7.9 (page 237). . Page 262, Sidebar 54: "degress" should be "degrees". . Page 280: "-uscore" in Sidebar 56 title should be an underscore. . Page 288, event loops: . Page 290, Sidebar 58: Describes use of I/O completion port handle to tie Proactor and Reactor event loops together; it actually uses an event handle associated with the I/O operation, not the completion port handle. . Page 303, 308: Logrec_Module should not use base-class initialization to pass &task_ to ACE_Module. task_ hasn't been constructed yet and when it is, the ACE_Task::module_ pointer will be overwritten. Instead, call ACE_Module::open from within Logrec_Module's constructor.