
عنوان:
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
زبان
انگلیسی
فرمت
حجم
13.4MB
موضوع
Programming