Muutke küpsiste eelistusi

Concurrency in Go: Tools and Techniques for Developers [Pehme köide]

  • Formaat: Paperback / softback, 250 pages, kõrgus x laius x paksus: 250x150x15 mm, kaal: 666 g
  • Ilmumisaeg: 25-Jul-2017
  • Kirjastus: O'Reilly Media
  • ISBN-10: 1491941197
  • ISBN-13: 9781491941195
Teised raamatud teemal:
  • Pehme köide
  • Hind: 48,27 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Tavahind: 56,79 €
  • Säästad 15%
  • Raamatu kohalejõudmiseks kirjastusest kulub orienteeruvalt 2-4 nädalat
  • Kogus:
  • Lisa ostukorvi
  • Tasuta tarne
  • Tellimisaeg 2-4 nädalat
  • Lisa soovinimekirja
  • Formaat: Paperback / softback, 250 pages, kõrgus x laius x paksus: 250x150x15 mm, kaal: 666 g
  • Ilmumisaeg: 25-Jul-2017
  • Kirjastus: O'Reilly Media
  • ISBN-10: 1491941197
  • ISBN-13: 9781491941195
Teised raamatud teemal:
Concurrency can be notoriously difficult to get right, but fortunately, the Go open source programming language makes working with concurrency tractable and even easy. If youre a developer familiar with Go, this practical book demonstrates best practices and patterns to help you incorporate concurrency into your systems.

Author Katherine Cox-Buday takes you step-by-step through the process. Youll understand how Go chooses to model concurrency, what issues arise from this model, and how you can compose primitives within this model to solve problems. Learn the skills and tooling you need to confidently write and implement concurrent systems of any size.

Understand how Go addresses fundamental problems that make concurrency difficult to do correctly Learn the key differences between concurrency and parallelism Dig into the syntax of Gos memory synchronization primitives Form patterns with these primitives to write maintainable concurrent code Compose patterns into a series of practices that enable you to write large, distributed systems that scale Learn the sophistication behind goroutines and how Gos runtime stitches everything together
Preface vii
1 An Introduction to Concurrency
1(22)
Moore's Law, Web Scale, and the Mess We're In
2(2)
Why Is Concurrency Hard?
4(16)
Race Conditions
4(2)
Atomicity
6(2)
Memory Access Synchronization
8(2)
Deadlocks, Livelocks, and Starvation
10(8)
Determining Concurrency Safety
18(2)
Simplicity in the Face of Complexity
20(3)
2 Modeling Your Code: Communicating Sequential Processes
23(14)
The Difference Between Concurrency and Parallelism
23(3)
What Is CSP?
26(3)
How This Helps You
29(2)
Go's Philosophy on Concurrency
31(6)
3 Go's Concurrency Building Blocks
37(48)
Goroutines
37(10)
The sync Package
47(17)
WaitGroup
47(2)
Mutex and RWMutex
49(3)
Cond
52(5)
Once
57(2)
Pool
59(5)
Channels
64(14)
The select Statement
78(5)
The Gomaxprocs Lever
83(1)
Conclusion
83(2)
4 Concurrency Patterns in Go
85(62)
Confinement
85(4)
The for-select Loop
89(1)
Preventing Goroutine Leaks
90(4)
The or-channel
94(3)
Error Handling
97(3)
Pipelines
100(14)
Best Practices for Constructing Pipelines
104(5)
Some Handy Generators
109(5)
Fan-Out, Fan-In
114(5)
The or-done-channel
119(1)
The tee-channel
120(2)
The bridge-channel
122(2)
Queuing
124(7)
The context Package
131(14)
Summary
145(2)
5 Concurrency at Scale
147(50)
Error Propagation
147(8)
Timeouts and Cancellation
155(6)
Heartbeats
161(11)
Replicated Requests
172(2)
Rate Limiting
174(14)
Healing Unhealthy Goroutines
188(6)
Summary
194(3)
6 Goroutines and the Go Runtime
197(16)
Work Stealing
197(15)
Stealing Tasks or Continuations?
204(8)
Presenting All of This to the Developer
212(1)
Conclusion
212(1)
A Appendix 213(6)
Index 219
Katherine is a computer scientist currently working at Canonical (of Ubuntu fame) on Juju, a cloud orchestration system. Her hobbies include software engineering, creative writing, Go (igo, baduk, weiquei), and guitar, all of which she pursues intermittently and with various levels of dedication.