본문 바로가기

리디 접속이 원활하지 않습니다.
강제 새로 고침(Ctrl + F5)이나 브라우저 캐시 삭제를 진행해주세요.
계속해서 문제가 발생한다면 리디 접속 테스트를 통해 원인을 파악하고 대응 방법을 안내드리겠습니다.
테스트 페이지로 이동하기

Hands-On Concurrency with Rust 상세페이지

컴퓨터/IT 개발/프로그래밍 ,   컴퓨터/IT IT 해외원서

Hands-On Concurrency with Rust

Confidently build memory-safe, parallel, and efficient software in Rust
소장전자책 정가13,000
판매가13,000
Hands-On Concurrency with Rust 표지 이미지

Hands-On Concurrency with Rust작품 소개

<Hands-On Concurrency with Rust> ▶Book Description
Most programming languages can really complicate things, especially with regard to unsafe memory access. The burden on you, the programmer, lies across two domains: understanding the modern machine and your language's pain-points. This book will teach you to how to manage program performance on modern machines and build fast, memory-safe, and concurrent software in Rust. It starts with the fundamentals of Rust and discusses machine architecture concepts. You will be taken through ways to measure and improve the performance of Rust code systematically and how to write collections with confidence. You will learn about the Sync and Send traits applied to threads, and coordinate thread execution with locks, atomic primitives, data-parallelism, and more.

The book will show you how to efficiently embed Rust in C++ code and explore the functionalities of various crates for multithreaded applications. It explores implementations in depth. You will know how a mutex works and build several yourself. You will master radically different approaches that exist in the ecosystem for structuring and managing high-scale systems.

By the end of the book, you will feel comfortable with designing safe, consistent, parallel, and high-performance applications in Rust.

▶What You Will Learn
⦁ Probe your programs for performance and accuracy issues
⦁ Create your own threading and multi-processing environment in Rust
⦁ Use coarse locks from Rust's Standard library
⦁ Solve common synchronization problems or avoid synchronization using atomic programming
⦁ Build lock-free/wait-free structures in Rust and understand their implementations in the crates ecosystem
⦁ Leverage Rust's memory model and type system to build safety properties into your parallel programs
⦁ Understand the new features of the Rust programming language to ease the writing of parallel programs

▶Key Features
⦁ Learn and improve the sequential performance characteristics of your software
⦁ Understand the use of operating system processes in a high-scale concurrent system
⦁ Learn of the various coordination methods available in the Standard library

▶Who This Book Is For
This book is aimed at software engineers with a basic understanding of Rust who want to exploit the parallel and concurrent nature of modern computing environments, safely.

▶What this book covers
The material that this book covers is very broad, and it attempts to go into that material at
some depth. The material is written so that you can work straight through, but it's also
expected that some readers will only be interested in a subset of the content.

⦁ Chapter 1, Preliminaries –Machine Architecture and Getting Started with Rust, discusses modern CPU architectures, focusing specifically on x86 and ARM. These two architectures will be the focus of the book. The reader is assumed to be familiar with Rust, but we will also discuss verifying that your installation works as expected.

⦁ Chapter 2, Sequential Rust Performance and Testing, introduces inspecting the performance of a Rust program. The details of the underlying computer hardware are especially important in this: cache interactions, memory layout, and exploiting the nature of the problem domain are key to writing fast programs. However, fast doesn't matter if the results are inaccurate. This chapter also focuses on testing in Rust.

⦁ Chapter 3, The Rust Memory Model –Ownership, References and Manipulation, discusses the memory model of Rust, focusing specifically on what makes Rust memory safe, how the language is constrained to achieve such safety and how these constraints influence the fundamental types' implementations. The reader will understand the borrow checker and its ways at the close of this chapter.

⦁ Chapter 4, Sync and Send –the Foundation of Rust Concurrency, is the first in which notions of concurrency make their appearance. The chapter discusses the Sync and Send traits, both why they exist and their implications. The chapter closes with a concrete demonstration of a multithreaded Rust program. Not the last, either.

⦁ Chapter 5, Locks –Mutex, Condvar, Barriers and RWLock, introduces the coarse synchronization methods available to the Rust programmer. Each is examined in turn and demonstrated in context of an industrial Rust project, hopper. The coarse synchronization methods are elaborated on in more detail in a series of smaller projects and data structures.

⦁ Chapter 6, Atomics –the Primitives of Synchronization, introduces fine synchronization in terms of atomic primitives available on all modern CPUs. This is an exceedingly difficult topic, and a deep investigation into atomic programming and its methods is carried out. The chapter lock-free, atomic data structures, and production-grade codebases. The reader will construct many of the coarse synchronization mechanisms seen in Chapter 5, Locks –c Mutex, Condvar, Barriers and RWLock.

⦁ Chapter 7, Atomics –Safely Reclaiming Memory, discusses at length one of the key difficulties of atomic programming in any language—safely deallocating memory. The main three methods—reference counting, hazard pointers, epoch-based reclamation—are each discussed in great detail, and production-worthy codebases are investigated. Crossbeam, especially, is discussed in great detail.

⦁ Chapter 8, High-Level Parallelism –Threadpools, Parallel Iterators and Processes, motivates and
explains the implementation of thread pooling. Having this knowledge in hand, the Rayon project is investigated and subsequently used in a complex project that benefits greatly from simple data parallelism.

⦁ Chapter 9, FFI and Embedding –Combining Rust and Other Languages, extends the final project of Chapter 8, High-Level Parallelism –Threadpools, Parallel Iterators, and Processes by embedding C code into it. The rlua project, a convenient library to extend Rust programs with lua programs, is discussed. The chapter closes by compiling Rust for embedding into C, Python, and Erlang projects.

⦁ Chapter 10, Futurism –Near-Term Rust, closes the book with a discussion of the near-term changes to the language that are apropos to parallel programmers, as well as a few miscellaneous remarks.


출판사 서평

▶Editorial Review
Welcome. The aim of this book is to teach beginner and moderate Rust programmers how to exploit modern parallel machines in the Rust programming language. This book will contain a variety of information relevant specifically to the Rust programming language, especially with regard to its standard library, but it will also contain information that is more generally applicable but happens to be expressed in Rust. Rust itself is not a terribly inventive language. Its key contribution, from where I sit, is the mainstreaming of affine types with application to memory allocation tracking. In most other respects, it is a familiar systems programming language, one that ought to feel familiar—twith a bit of adjustment—to those with a background in GC-less programming languages. This is a good thing, considering our aim here is to investigate concurrency—there is a wealth of information available in the papers and books written about this subject, and we understand and apply their concepts. This book will reference a number of such works, whose contexts are C++, ATS, ADA, and similar languages.


저자 소개

⦁ Brian L. Troutwine
Brian L. Troutwine's professional focuses on real-time, fault-tolerant and critical software in high-scale and/or embedded systems. He is a frequent international public speaker on these topics. He knows many programming languages but works primarily in Erlang/OTP, C++, Rust, Haskell.

He is keenly interested in building reliable, real-time systems that have to cope with some extreme or another. He is also fascinated both by the constraints of embedded machines and networked systems. He spends time engineering custom software for unusual problem domains.

목차

▶TABLE of CONTENTS
1: PRELIMINARIES – MACHINE ARCHITECTURE AND GETTING STARTED WITH RUST
2: SEQUENTIAL RUST PERFORMANCE AND TESTING
3: THE RUST MEMORY MODEL – OWNERSHIP, REFERENCES AND MANIPULATION
4: SYNC AND SEND – THE FOUNDATION OF RUST CONCURRENCY
5: LOCKS – MUTEX, CONDVAR, BARRIERS AND RWLOCK
6: ATOMICS – THE PRIMITIVES OF SYNCHRONIZATION
7: ATOMICS – SAFELY RECLAIMING MEMORY
8: HIGH-LEVEL PARALLELISM – THREADPOOLS, PARALLEL ITERATORS AND PROCESSES
9: FFI AND EMBEDDING – COMBINING RUST AND OTHER LANGUAGES
10: FUTURISM – NEAR-TERM RUST


리뷰

구매자 별점

0.0

점수비율
  • 5
  • 4
  • 3
  • 2
  • 1

0명이 평가함

리뷰 작성 영역

이 책을 평가해주세요!

내가 남긴 별점 0.0

별로예요

그저 그래요

보통이에요

좋아요

최고예요

별점 취소

구매자 표시 기준은 무엇인가요?

'구매자' 표시는 리디에서 유료도서 결제 후 다운로드 하시거나 리디셀렉트 도서를 다운로드하신 경우에만 표시됩니다.

무료 도서 (프로모션 등으로 무료로 전환된 도서 포함)
'구매자'로 표시되지 않습니다.
시리즈 도서 내 무료 도서
'구매자’로 표시되지 않습니다. 하지만 같은 시리즈의 유료 도서를 결제한 뒤 리뷰를 수정하거나 재등록하면 '구매자'로 표시됩니다.
영구 삭제
도서를 영구 삭제해도 ‘구매자’ 표시는 남아있습니다.
결제 취소
‘구매자’ 표시가 자동으로 사라집니다.

이 책과 함께 구매한 책


이 책과 함께 둘러본 책



본문 끝 최상단으로 돌아가기

spinner
모바일 버전