Libro

C++ Concurrency in Action ฉบับที่ 2: ภาพรวมเนื้อหาและพื้นฐานที่ควรมี

หนังสือของ Anthony Williams ว่าด้วยการเขียนโปรแกรม multithreaded ด้วย C++ ฉบับปรับปรุงสำหรับ C++14 และ C++17 บทความนี้สรุปจากหน้าสำนักพิมพ์ Manning roadmap ของหนังสือ และ repository โค้ดทางการ

ภาพประกอบบทความ: ปกหนังสือ C++ Concurrency in Action โดย Anthony Williams

ขอบเขตของบทความ: แนะนำขอบเขตเนื้อหาจากสารบัญในรูป roadmap ของหนังสือบน Manning liveBook หน้าหนังสือของสำนักพิมพ์ Manning และ repository โค้ดของผู้เขียน ยังไม่ได้อ่านเนื้อหาบทใดเต็มบท

นักพัฒนา C++ ที่ต้องเขียนโค้ดหลาย thread มักเจอบั๊กที่เกิดเป็นครั้งคราวและทำซ้ำยาก เช่น data race หรือ deadlock หนังสือเล่มนี้ตั้งใจสอนเครื่องมือ concurrency ใน Standard Library อย่างเป็นระบบ บทความนี้ช่วยดูว่าเนื้อหาครอบคลุมอะไร และคุณพร้อมจะอ่านหรือยัง

หนังสือเล่มนี้ว่าด้วยอะไร

C++ Concurrency in Action, Second Edition เขียนโดย Anthony Williams ตีพิมพ์โดย Manning เดือนกุมภาพันธ์ 2019 ฉบับพิมพ์ยาว 592 หน้า ISBN 9781617294693 (หน้าหนังสือของ Manning) หน้าสำนักพิมพ์ระบุว่าฉบับนี้ปรับปรุงให้ครอบคลุม C++14 และ C++17 และแนะนำผู้เขียนว่าเป็นสมาชิก BSI C++ Panel มาตั้งแต่ปี 2001 และเป็นผู้พัฒนา just::thread Pro ซึ่งเป็นส่วนขยายของ thread library ใน C++11

เนื้อหาครอบคลุมหัวข้ออะไร

หน้าแนะนำหนังสือบน Manning liveBook มี roadmap แบ่งเนื้อหาไว้ดังนี้

บท

หัวข้อตาม roadmap

1–4

แนะนำเครื่องมือ concurrency ใน Standard Library และวิธีใช้

5

memory model และ atomic operations รวมถึงการกำหนดลำดับการทำงานด้วย atomic

6

data structure แบบใช้ lock

7

data structure แบบ lock-free

8

แนวทางออกแบบโค้ด multithreaded ปัญหาด้านประสิทธิภาพ และตัวอย่าง parallel algorithm

9

การจัดการ thread เช่น thread pool, work queue และการขัดจังหวะงาน

10

parallelism ที่เพิ่มใน C++17 ในรูป overload ของ algorithm ใน Standard Library

11

การทดสอบและดีบักโค้ด concurrent

หน้าบทที่ 1 บน liveBook เปิดให้เห็นเพียงชื่อบท Hello, world of concurrency in C++! รายการหัวข้อ และย่อหน้าแรก จึงยังไม่ได้อ่านเนื้อหาบทนั้น

โค้ดประกอบ

ผู้เขียนเผยแพร่โค้ดของฉบับที่ 2 ไว้ใน ccia_code_samples บน GitHub ภายใต้ Boost Software License ไฟล์ในโฟลเดอร์ listings ตั้งชื่อตามเลขบทและเลข listing เช่น listing_1.1.cpp ตรงกับ listing 1.1 ในเล่ม ผู้อ่านจึงเปิดดูตัวอย่างโค้ดก่อนตัดสินใจได้

พื้นฐานที่ควรมีก่อนอ่าน

หน้า Manning ระบุว่าหนังสือเขียนสำหรับนักพัฒนา C และ C++ ระดับกลาง และไม่ต้องมีประสบการณ์ concurrency มาก่อน ถ้ายังไม่คุ้นกับ template, RAII หรือ smart pointer ควรทบทวนก่อน เพราะเครื่องมือใน Standard Library ใช้แนวคิดเหล่านี้ ข้อแนะนำนี้เป็นของบทความ

เหมาะกับใคร และใครควรเริ่มจากเล่มอื่นก่อน

  • เหมาะ กับนักพัฒนา C++ ที่เขียนภาษาได้คล่องแล้ว และต้องการเข้าใจ thread, synchronization และ memory model ให้ถูกต้อง

  • เหมาะ กับคนทำระบบที่ต้องการประสิทธิภาพสูง เช่น ระบบประมวลผลข้อมูลตลาด เพราะบทที่ 5 ถึง 8 พูดถึง atomic, lock-free และประสิทธิภาพ ข้อนี้เป็นการเชื่อมโยงของบทความ หนังสือไม่ได้เขียนเรื่องการเงิน

  • ควรเริ่มจากเล่มอื่นก่อน ถ้ายังเพิ่งเริ่มเรียน C++

ข้อจำกัดของข้อมูลที่ใช้ในบทความนี้

  • ยังไม่ได้อ่านเนื้อหาบทใด ข้อมูลเนื้อหามาจาก roadmap และหน้าสำนักพิมพ์

  • ข้อมูลในแคตตาล็อกของ Libro ใช้ ISBN 9781638356356 ซึ่งไม่ตรงกับ ISBN ฉบับพิมพ์ 9781617294693 บนหน้า Manning น่าจะเป็นฉบับ ebook ของฉบับที่ 2 แต่ยังไม่ได้ยืนยันจากสำนักพิมพ์

  • ไม่ได้ compile หรือทดลองโค้ดใน repository

แหล่งอ้างอิง

บทความนี้อ่านจบได้ในตัวเอง หนังสือด้านบนคือจุดต่อยอดสำหรับผู้ที่ต้องการศึกษาลึกขึ้น