کتاب C++ Concurrency in Action نسخهی دوم، یک راهنمای عملی برای پیادهسازی همزمانی یا Concurrency با استفاده از زبان برنامهنویسی سیپلاسپلاس است. این کتاب در 10 فصل هم به تئوریهای مهم همزمانی و هم به پیادهسازی عملی آن پرداخته است.
در ادامه مقدمهای از کتاب C++ Concurrency in Action را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب C++ Concurrency in Action:
من هنگام کار در اولین شغلم پس از ترک دانشگاه با مفهوم کد چند رشتهای مواجه شدم. ما در حال نوشتن یک برنامه پردازش داده بودیم که باید یک پایگاه داده را با سوابق دادههای دریافتی پر میکرد. دادههای زیادی وجود داشت، اما هر رکورد مستقل بود و قبل از درج در پایگاه داده نیاز به پردازش معقولی داشت. برای استفاده کامل از قدرت UltraSPARC 10 CPU خود، کد را در چندین رشته اجرا کردیم، هر رشته مجموعهای از رکوردهای دریافتی خود را پردازش میکند.
ما کد را در C++ با استفاده از رشتههای POSIX نوشتیم و اشتباهات زیادی مرتکب شدیم – چند رشتهای برای همه ما جدید بود – اما در نهایت به آن رسیدیم. همچنین در حین کار روی این پروژه بود که برای اولین بار از کمیته استانداردهای C++ و استاندارد تازه منتشر شده C++ مطلع شدم. من از آن زمان علاقه شدیدی به multithreading و همزمانی داشتم.
جایی که دیگران آن را دشوار، پیچیده و منبعی از مشکلات میدانستند، من آن را ابزاری قدرتمند میدانستم که میتواند کد شما را قادر سازد تا از سختافزار موجود برای اجرای سریعتر استفاده کند. بعداً، یاد میگیرم که چگونه میتوان از آن برای بهبود پاسخگویی و عملکرد برنامهها حتی روی سختافزار تک هستهای، با استفاده از رشتههای متعدد برای پنهان کردن تأخیر عملیات زمانبر مانند I/O استفاده کرد.
من همچنین یاد گرفتم که چگونه در سطح سیستم عامل کار می کند و چگونه CPUهای اینتل با سوئیچینگ وظایف کار میکنند. در همین حال، علاقه من به C++ باعث شد با ACCU و سپس پنل استانداردهای C++ در BSI و همچنین Boost در تماس باشم. من توسعه اولیه Boost Thread Library را با علاقه دنبال کردم و زمانی که توسعهدهنده اصلی آن را رها کرد، از این فرصت استفاده نکردم تا درگیر آن شوم. من توسعهدهنده و نگهدارنده اصلی کتابخانه Boost Thread برای چندین سال بودم، اگرچه از آن زمان این مسئولیت را به عهده گرفتم.
از آنجایی که کار کمیته استانداردهای C++ از رفع نقص استاندارد موجود به نوشتن پیشنهادات برای استاندارد C++11 (با نام C++0x به امید اینکه تا سال 2009 تکمیل شود و سپس رسماً C++11) تغییر کند. از آنجایی که در نهایت در سال 2011 منتشر شد، بیشتر با BSI درگیر شدم و شروع به تهیه پیشنویس طرحهای خودم کردم.
هنگامی که مشخص شد که چند رشتهای در دستور کار قرار دارد، من با هر دو پا وارد کار شدم و بسیاری از پیشنهادهای چند رشتهای و همزمانی را که این بخش از استاندارد را شکل دادند، تألیف یا با هم نویسندگی کردم. من به همکاری با گروه همزمانی ادامه دادم زیرا ما روی تغییرات C++17، Concurrency TS و پیشنهادات برای آینده کار می کردیم. من احساس مفتخری میکنم که این فرصت را داشتم که دو مورد از علایق اصلی خود را در ارتباط با کامپیوتر – C++ و multithreading – در این راه ترکیب کنم.
کتاب C++ Concurrency in Action از تمام تجربیات من با C++ و multithreading استفاده میکند و هدف آن این است که به توسعهدهندگان C++ یاد دهد که چگونه از کتابخانه موضوعی C++17 و Concurrency TS به طور ایمن و کارآمد استفاده کنند. همچنین امیدوارم بتوانم در این راه مقداری از اشتیاق خود را نسبت به این موضوع ابراز کنم.
در مورد این کتاب
کتاب C++ Concurrency in Action یک راهنمای عمیق برای امکانات همزمانی و چند رشتهای از استاندارد جدید C++، از استفاده اولیه از std::thread، std::mutex، و std:: async، تا پیچیدگی های عملیات اتمی و مدل حافظه است.
نقشه راه
چهار فصل اول به معرفی امکانات مختلف کتابخانه ارائه شده توسط کتابخانه میپردازد و نحوه استفاده از آنها را نشان میدهد.
فصل 5 سطح پایین مدل حافظه و عملیات اتمی را پوشش میدهد، از جمله اینکه چگونه میتوان از عملیات اتمیک برای اعمال محدودیتهای ترتیب بر سایر کدها استفاده کرد و پایان فصلهای مقدماتی را مشخص میکند.
فصلهای 6 و 7 پوشش موضوعات سطح بالاتر را با چند مثال از نحوه استفاده از امکانات اولیه برای ساختن ساختارهای داده پیچیدهتر آغاز میکنند – ساختارهای داده مبتنی بر قفل در
فصل 6 و ساختارهای داده بدون قفل در فصل 7.
فصل 8 موضوعات سطح بالاتر را با دستورالعملهایی برای طراحی کد چند رشتهای، پوشش مسائلی که بر عملکرد تأثیر میگذارند، و اجرای نمونهای از الگوریتمهای موازی مختلف ادامه میدهد.
فصل 9 مدیریت رشتهها را پوشش میدهد – مجموعههای موضوعات، صفهای کاری و عملیات قطع کردن.
فصل 10 پشتیبانی موازی جدید از C++17 را پوشش میدهد که به شکل اضافهبارهای اضافی برای بسیاری از الگوریتمهای کتابخانه استاندارد ارائه میشود. فصل 11 تست و اشکالزدایی را پوشش میدهد – انواع اشکالات، تکنیکهای مکانیابی آنها، نحوه آزمایش آنها و غیره.
ضمائم شامل شرح مختصری از برخی از امکانات زبان جدید معرفی شده با استاندارد جدید است که مربوط به چند رشتهای است، جزئیات پیادهسازی کتابخانه ارسال پیام ذکر شده در فصل 4 و ارجاع کامل به کتابخانه موضوعی C++17.
چه کسی باید کتاب C++ Concurrency in Action را بخواند؟
اگر در حال نوشتن کدهای چند رشتهای در C++ هستید، باید کتاب C++ Concurrency in Action را بخوانید. اگر از امکانات جدید چند رشتهای کتابخانه استاندارد C++ استفاده میکنید، کتاب C++ Concurrency in Action یک راهنمای ضروری است. اگر از کتابخانههای رشتهای جایگزین استفاده میکنید، دستورالعملها و تکنیکهای فصلهای بعدی همچنان مفید خواهند بود. دانش کاری خوب از C++ فرض میشود، اگرچه آشنایی با ویژگیهای زبان جدید نیست – اینها در ضمیمه A پوشش داده شدهاند. دانش یا تجربه قبلی برنامهنویسی چند رشتهای فرض نمیشود، اگرچه ممکن است مفید باشد.
نحوه استفاده از کتاب C++ Concurrency in Action:
اگر قبلاً هرگز کد چند رشتهای ننوشتهاید، پیشنهاد میکنم کتاب C++ Concurrency in Action را به صورت متوالی از ابتدا تا انتها بخوانید، هرچند احتمالاً از قسمتهای جزئیتر فصل 5 صرفنظر کنید. باید فصل 7 را تا زمانی که آن را بخوانید ذخیره کنید. اگر قبلاً از امکانات زبان جدید C++11 استفاده نکردهاید، ممکن است ارزش آن را داشته باشد که قبل از شروع به ضمیمه A نگاهی بیندازید تا مطمئن شوید که با مثالهای موجود در کتاب C++ Concurrency in Action به سرعت عمل میکنید. با این حال، استفاده از امکانات زبان جدید در متن برجسته شده است، و اگر با چیزی مواجه شدید که قبلاً ندیدهاید، همیشه می توانید به ضمیمه تلنگر بزنید.
اگر تجربه گستردهای در نوشتن کدهای چند رشتهای در محیطهای دیگر دارید، فصلهای آغازین احتمالا هنوز ارزش بررسی را دارند، بنابراین میتوانید ببینید که چگونه امکاناتی که میشناسید بر روی امکانات جدید C++ استاندارد منطبق میشوند. اگر قرار است هر کار سطح پایینی با متغیرهای اتمی انجام دهید، فصل 5 ضروری است. فصل 8 ارزش بررسی دارد تا اطمینان حاصل شود که با مواردی مانند ایمنی استثنایی در C++ چند رشتهای آشنا هستید. اگر کار خاصی در ذهن دارید، و فهرست مطالب باید به شما کمک کند بخش مربوطه را به سرعت پیدا کنید.
هنگامی که در استفاده از کتابخانه موضوعی C++ سرعت گرفتید، پیوست D باید همچنان مفید باشد، مانند جستجوی جزئیات دقیق هر کلاس و فراخوانی تابع. همچنین ممکن است بخواهید هر از گاهی به فصلهای اصلی بازگردید تا حافظه خود را در یک ساختار خاص تجدید کنید یا به کد نمونه نگاه کنید.
علاوه بر کتاب C++ Concurrency in Action، شما میتوانید برای آشنایی بیشتر با زبان برنامهنویسی سیپلاسپلاس از کتاب Discovering Modern C++ نیز استفاده نمائید.
سرفصلهای کتاب C++ Concurrency in Action:
- Chapter 1 Hello, World Of Concurrency In C++!
- Chapter 2 Managing Threads
- Chapter 3 Sharing Data Between Threads
- Chapter 4 Synchronizing Concurrent Operations
- Chapter 5 The C++ Memory Model And Operations On Atomic Types
- Chapter 6 Designing Lock-Based Concurrent Data Structures
- Chapter 7 Designing Lock-Free Concurrent Data Structures
- Chapter 8 Designing Concurrent Code
- Chapter 9 Advanced Thread Management
- Chapter 10 Parallel Algorithms
- Chapter 11 Testing And Debugging Multithreaded Applications
- Appendix A Brief reference for some C++11 language features
- Appendix B Brief comparison of concurrency libraries
- Appendix C A message-passing framework and complete ATM example
- Appendix D C++ Thread Library reference
- Index
فایل کتاب C++ Concurrency in Action به همراه کدهای آن را میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.