دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: [1 ed.]
نویسندگان: Mara Bos
سری:
ISBN (شابک) : 9781098119447
ناشر: O'Reilly Media
سال نشر: 2023
تعداد صفحات: 220
[252]
زبان: English
فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود)
حجم فایل: 3 Mb
در صورت تبدیل فایل کتاب Rust Atomics and Locks به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب Rust Atomics and Locks نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
زبان برنامه نویسی Rust برای همزمانی بسیار مناسب است و اکوسیستم آن دارای کتابخانه های زیادی است که شامل بسیاری از ساختارهای داده همزمان، قفل ها و موارد دیگر است. اما اجرای صحیح آن ساختارها می تواند بسیار دشوار باشد. حتی در پر استفاده ترین کتابخانه ها، اشکالات سفارش حافظه غیر معمول نیستند. در این کتاب عملی، Mara Bos، رهبر تیم کتابخانه Rust، به برنامه نویسان Rust در همه سطوح کمک می کند تا درک روشنی از همزمانی سطح پایین داشته باشند. شما همه چیز را در مورد اتم ها و ترتیب حافظه و نحوه ترکیب آنها با API های سیستم عامل اصلی برای ساختن اولیه های رایج مانند mutexes و متغیرهای شرط یاد خواهید گرفت. هنگامی که کار را تمام کردید، درک محکمی از نحوه تطبیق مدل حافظه Rust، پردازنده و نقش های سیستم عامل با هم خواهید داشت. با این راهنما، میآموزید: چگونه سیستم نوع Rust برای برنامهنویسی درست بهخوبی کار میکند همه چیز درباره mutexes، متغیرهای شرط، اتمها و ترتیب حافظه در عمل با عملیات اتمی پردازندههای Intel و ARM چگونه قفل میشود. با پشتیبانی از سیستم عامل پیاده سازی می شوند نحوه نوشتن کد صحیح که شامل همزمانی، اتمی و قفل می شود.
The Rust programming language is extremely well-suited for concurrency, and its ecosystem has many libraries that include lots of concurrent data structures, locks, and more. But implementing those structures correctly can be very difficult. Even in the most well-used libraries, memory ordering bugs are not uncommon. In this practical book, Mara Bos, leader of the Rust library team, helps Rust programmers of all levels gain a clear understanding of low-level concurrency. You\'ll learn everything about atomics and memory ordering and how they\'re combined with basic operating system APIs to build common primitives like mutexes and condition variables. Once you\'re done, you\'ll have a firm grasp of how Rust\'s memory model, the processor, and the roles of the operating system all fit together. With this guide, you\'ll learn: How Rust\'s type system works exceptionally well for programming concurrency correctly All about mutexes, condition variables, atomics, and memory ordering What happens in practice with atomic operations on Intel and ARM processors How locks are implemented with support from the operating system How to write correct code that includes concurrency, atomics, and locks How to build your own locking and synchronization primitives correctly
Cover Copyright Table of Contents Foreword Preface Who This Book Is For Overview of the Chapters Code Examples Conventions Used in This Book Contact Information Acknowledgments Chapter 1. Basics of Rust Concurrency Threads in Rust Scoped Threads Shared Ownership and Reference Counting Statics Leaking Reference Counting Borrowing and Data Races Interior Mutability Cell RefCell Mutex and RwLock Atomics UnsafeCell Thread Safety: Send and Sync Locking: Mutexes and RwLocks Rust’s Mutex Lock Poisoning Reader-Writer Lock Waiting: Parking and Condition Variables Thread Parking Condition Variables Summary Chapter 2. Atomics Atomic Load and Store Operations Example: Stop Flag Example: Progress Reporting Example: Lazy Initialization Fetch-and-Modify Operations Example: Progress Reporting from Multiple Threads Example: Statistics Example: ID Allocation Compare-and-Exchange Operations Example: ID Allocation Without Overflow Example: Lazy One-Time Initialization Summary Chapter 3. Memory Ordering Reordering and Optimizations The Memory Model Happens-Before Relationship Spawning and Joining Relaxed Ordering Release and Acquire Ordering Example: Locking Example: Lazy Initialization with Indirection Consume Ordering Sequentially Consistent Ordering Fences Common Misconceptions Summary Chapter 4. Building Our Own Spin Lock A Minimal Implementation An Unsafe Spin Lock A Safe Interface Using a Lock Guard Summary Chapter 5. Building Our Own Channels A Simple Mutex-Based Channel An Unsafe One-Shot Channel Safety Through Runtime Checks Safety Through Types Borrowing to Avoid Allocation Blocking Summary Chapter 6. Building Our Own “Arc” Basic Reference Counting Testing It Mutation Weak Pointers Testing It Optimizing Summary Chapter 7. Understanding the Processor Processor Instructions Load and Store Read-Modify-Write Operations Load-Linked and Store-Conditional Instructions Caching Cache Coherence Impact on Performance Reordering Memory Ordering x86-64: Strongly Ordered ARM64: Weakly Ordered An Experiment Memory Fences Summary Chapter 8. Operating System Primitives Interfacing with the Kernel POSIX Wrapping in Rust Linux Futex Futex Operations Priority Inheritance Futex Operations macOS os_unfair_lock Windows Heavyweight Kernel Objects Lighter-Weight Objects Address-Based Waiting Summary Chapter 9. Building Our Own Locks Mutex Avoiding Syscalls Optimizing Further Benchmarking Condition Variable Avoiding Syscalls Avoiding Spurious Wake-ups Reader-Writer Lock Avoiding Busy-Looping Writers Avoiding Writer Starvation Summary Chapter 10. Ideas and Inspiration Semaphore RCU Lock-Free Linked List Queue-Based Locks Parking Lot–Based Locks Sequence Lock Teaching Materials Index About the Author Colophon