جلد کتاب یادگیری برنامه‌نویسی همزمان با Go

عنوان:

Learn Concurrent Programming with Go

نویسنده:

James Cutajar

انتشارات:

Manning

تاریخ انتشار:

2024

حجم:

13.4MB

دانلود

معرفی کتاب:" یادگیری برنامه‌نویسی همزمان با Go "

هم‌روندی (Concurrency) نیازی به گیج‌کننده بودن ندارد. یاد بگیرید چگونه کدی بنویسید که به‌طور هم‌زمان اجرا شود، عملکرد را بهبود دهد، برای حجم بالای داده‌ها مقیاس‌پذیر باشد، و از تمام ظرفیت سخت‌افزارهای چندپردازنده‌ای مدرن استفاده کند.

بسیاری از توسعه‌دهندگان فکر می‌کنند هم‌روندی بسیار دشوار است. اما کتاب Learn Concurrent Programming with Go آمده تا خلاف آن را ثابت کند! این کتاب با استفاده از ابزارهای ساده و قابل‌فهم زبان Go اصول و تکنیک‌های هم‌روندی را آموزش می‌دهد و شما را گام‌به‌گام با بهترین شیوه‌های پیاده‌سازی هم‌روندی مؤثر آشنا می‌سازد. تکنیک‌های ارائه‌شده نه تنها در Go، بلکه در زبان‌های دیگر نیز قابل استفاده‌اند.

آنچه در این کتاب می‌آموزید:

  • پیاده‌سازی هم‌روندی مؤثر برای نرم‌افزاری سریع‌تر، مقیاس‌پذیرتر و پاسخ‌گوتر
  • اجتناب از مشکلات رایج هم‌روندی مانند بن‌بست‌ها (Deadlocks) و شرایط رقابتی (Race Conditions)
  • مدیریت هم‌روندی با استفاده از Goroutineها، Mutexها، قفل‌های Readers-Writer و موارد دیگر
  • شناسایی الگوهای هم‌روندی مانند خط لوله‌ها (Pipelining)، استخر کارگران (Worker Pools) و انتقال پیام (Message Passing)
  • کشف مزایا، محدودیت‌ها و ویژگی‌های محاسبات موازی
  • ارتقای مهارت‌های برنامه‌نویسی Go با مباحث پیشرفته مانند متغیرهای اتمی (Atomic Variables) و Futexها

درباره فناوری

تقریباً می‌توان عملکرد و پاسخ‌گویی هر برنامه‌ای را با افزودن هم‌روندی به کد بهبود داد. این کتاب از مفاهیم پایه آغاز کرده و مهارت شما را گام‌به‌گام از طریق سناریوهای واقعی توسعه‌دهندگان تقویت می‌کند. نویسنده با زبانی ساده و با تکیه بر قابلیت‌های درونی Go، همه ابعاد هم‌روندی را توضیح می‌دهد.

درباره کتاب

کتاب Learn Concurrent Programming with Go یک مقدمه عملی و پروژه‌محور برای توسعه نرم‌افزار در سیستم‌های چندپردازنده‌ای مدرن است. در این کتاب یاد می‌گیرید چگونه وظایف بزرگ را به بخش‌های مستقل تقسیم کنید تا به‌طور هم‌زمان اجرا شوند. شما با استفاده از Go الگوهای رایج هم‌روندی را پیاده‌سازی می‌کنید: قفل‌های Readers-Writer، سمافور (Semaphores), انتقال پیام و اشتراک حافظه. این مهارت‌ها به‌راحتی در سایر زبان‌ها نیز کاربرد خواهند داشت.

سرفصل‌ها:

  • بخش ۱: مبانی
    • ورود به برنامه‌نویسی هم‌روند
    • کار با نخ‌ها (Threads)
    • ارتباط نخ‌ها با اشتراک حافظه
    • همگام‌سازی با Mutexها
    • متغیرهای شرطی و سمافورها
    • همگام‌سازی با Waitgroups و موانع (Barriers)
  • بخش ۲: انتقال پیام
    • ارتباط با Message Passing
    • انتخاب کانال‌ها (Channel Selection)
    • برنامه‌نویسی با کانال‌ها
  • بخش ۳: هم‌روندی پیشرفته
    • الگوهای هم‌روندی
    • اجتناب از بن‌بست‌ها
    • متغیرهای اتمی، Spin Locks و Futexها

درباره خوانندگان

این کتاب برای برنامه‌نویسانی است که دانش پایه‌ای از Go یا یکی از زبان‌های خانواده C دارند. هیچ تجربه‌ای در زمینه هم‌روندی لازم نیست.

درباره نویسنده

جیمز کوتاژار (James Cutajar) بیش از ۲۰ سال سابقه برنامه‌نویسی دارد. او یک مشارکت‌کننده متن‌باز، وبلاگ‌نویس، مروج فناوری، مدرس Udemy و نویسنده است.

فهرست مطالب

  • Preface
  • Acknowledgments
  • About this book
  • About the author
  • About the cover illustration
  • Part 1: Foundations
  • Chapter 1: Stepping into concurrent programming
  • 1.1 About concurrency
  • 1.2 Interacting with a concurrent world
  • 1.3 Increasing throughput
  • 1.4 Improving responsiveness
  • 1.5 Programming concurrency in Go
  • 1.6 Scaling performance
  • Chapter 2: Dealing with threads
  • 2.1 Multiprocessing in operating systems
  • 2.2 Abstracting concurrency with processes and threads
  • 2.3 What’s so special about goroutines?
  • 2.4 Concurrency versus parallelism
  • 2.5 Exercises
  • Chapter 3: Thread communication using memory sharing
  • 3.1 Sharing memory
  • 3.2 Memory sharing in practice
  • 3.3 Race conditions
  • 3.4 Exercises
  • Chapter 4: Synchronization with mutexes
  • 4.1 Protecting critical sections with mutexes
  • 4.2 Improving performance with readers–writer mutexes
  • 4.3 Exercises
  • Chapter 5: Condition variables and semaphores
  • 5.1 Condition variables
  • 5.2 Counting semaphores
  • 5.3 Exercises
  • Chapter 6: Synchronizing with waitgroups and barriers
  • 6.1 Waitgroups in Go
  • 6.2 Barriers
  • 6.3 Exercises
  • Part 2: Message passing
  • Chapter 7: Communication using message passing
  • 7.1 Passing messages
  • 7.2 Implementing channels
  • 7.3 Exercises
  • Chapter 8: Selecting channels
  • 8.1 Combining multiple channels
  • 8.2 Choosing between message passing and memory sharing
  • 8.3 Exercises
  • Chapter 9: Programming with channels
  • 9.1 Communicating sequential processes
  • 9.2 Reusing common patterns with channels
  • 9.3 Exercises
  • Part 3: More concurrency
  • Chapter 10: Concurrency patterns
  • 10.1 Decomposing programs
  • 10.2 Concurrency implementation patterns
  • 10.3 Exercises
  • Chapter 11: Avoiding deadlocks
  • 11.1 Identifying deadlocks
  • 11.2 Dealing with deadlocks
  • 11.3 Deadlocking with channels
  • 11.4 Exercises
  • Chapter 12: Atomics, spin locks, and futexes
  • 12.1 Lock-free synchronization with atomic variables
  • 12.2 Implementing a mutex with spin locks
  • 12.3 Improving on spin locking
  • 12.4 Exercises
  • Index

مشخصات

نام کتاب

Learn Concurrent Programming with Go

نویسنده

James Cutajar

انتشارات

Manning

تاریخ انتشار

2024

ISBN

9781633438385

تعداد صفحات

329

زبان

انگلیسی

فرمت

pdf

حجم

13.4MB

موضوع

Programming