Index
A
- ABA problem
- about / The ABA problem
- acquire fence
- async / Unit tests
- async/await infrastructure
- about / Concurrent idioms
- async/await statements / Asynchronous Programming Model
- asynchronous I/O
- about / Deep dive into asynchronous I/O
- asynchronous patterns
- about / Asynchronous patterns
- Asynchronous Programming Model (APM) / Asynchronous Programming Model
- Event-based Asynchronous Pattern (EAP) / Event-based Asynchronous Pattern
- Task-based Asynchronous Pattern (TAP) / Task-based Asynchronous Pattern
- Asynchronous Programming Model (APM)
- about / Asynchronous Programming Model
- features / Asynchronous Programming Model
- asynchrony, for UI
- importance / The importance of asynchrony for UI
- async keyword
- async over sync / Real and fake asynchronous I/O operations
- atomic
- await / Unit tests
- awaiting task completion
- about / Awaiting task completion
- await keyword
- working / How the await keyword works
- await statement / Setting a task timeout
B
- Bing
- downloading of images, implementing from / Implementing the downloading of images from Bing
- URL / Implementing the downloading of images from Bing
- blocking queue / Custom Producer/Consumer pattern implementation
- bounded queue / Custom Producer/Consumer pattern implementation
C
- C# 5.0 built-in support, for asynchrony
- code, enhancing with / Enhancing the code with C# 5.0 built-in support for asynchrony
- C# asynchronous infrastructure
- simulating, with iterators / Simulating C# asynchronous infrastructure with iterators
- cache
- implementing, with ReaderWriterLockSlim / Implementing a cache with ReaderWriterLockSlim
- cache aside pattern / Implementing a cache with ReaderWriterLockSlim
- callbacks
- used, for task cancellation / Cancellation using callbacks
- class constraint
- about / The lock-free stack
- coarse-grained approach
- about / Understanding granularity
- selecting / Choosing the coarse-grained or fine-grained approach
- coarse-grained approach, with TPL
- coarse-grained locking / Concurrent collections in .NET
- code coupling
- about / Task composition
- common problems
- about / Common problems and solutions
- solutions / Common problems and solutions
- compare-and-swap (CAS) / Implementation details
- compare and swap (CAS)
- about / The ABA problem
- compiler optimizations
- Component Object Model (COM) / Performance issues
- Concurrency Visualizer
- about / The Concurrency Visualizer
- ConcurrentBag<T>
- about / ConcurrentBag<T>
- using / ConcurrentBag in practice
- ConcurrentDictionary
- about / ConcurrentDictionary
- Lazy<T> / Using Lazy<T>
- details, implementing / Implementation details
- implementation details, using / Using the implementation details in practice
- ConcurrentDictionary class
- lock-free operations / Implementation details, Lock-free operations
- fine-grained lock operations / Implementation details, Fine-grained lock operations
- exclusive lock operations / Implementation details, Exclusive lock operations
- concurrent idioms
- about / Concurrent idioms
- Process Tasks, in Completion Order / Process Tasks in Completion Order
- parallelism degree, limiting / Limiting the parallelism degree
- task timeout, setting / Setting a task timeout
- concurrent patterns
- about / Concurrent patterns
- ConcurrentQueue<T>
- about / ConcurrentQueue<T>
- ConcurrentStack<T>
- about / ConcurrentStack<T>
- continuation task
- about / Task composition
- CPU-bound tasks and queues
- about / CPU-bound tasks and queues
- custom awaitable type
- implementing / Implementing a custom awaitable type
- CustomProvider class / Implementing a cache with ReaderWriterLockSlim
D
- deadlock
- about / What's the problem?
- debugging
- about / Debugging
- Enable Just My Code setting / Just my code setting
- call stack window / Call stack window
- threads window / Threads window
- Tasks window / Tasks window
- parallel stacks window / Parallel stacks window
- double checked locking pattern
- about / The lock-free queue
- downloading of images, implementing from Bing
- about / Implementing the downloading of images from Bing
- simple synchronous solution, creating / Creating a simple synchronous solution
- parallel solution, creating with Task Parallel Library / Creating a parallel solution with Task Parallel Library
- code, enhancing with C# 5.0 built-in support / Enhancing the code with C# 5.0 built-in support for asynchrony
- C# asynchronous infrastructure, simulating with iterators / Simulating C# asynchronous infrastructure with iterators
E
- EditBin.exe tool / The number of threads
- Enqueue method / ConcurrentQueue<T>
- Event-based Asynchronous Pattern (EAP)
- about / Event-based Asynchronous Pattern
- features / Event-based Asynchronous Pattern
- exception handling
- about / Exception handling
- exclusive lock operations / Exclusive lock operations
- execution context / Execution and synchronization contexts
F
- fake asynchronous I/O operations
- features, Asynchronous Programming Model (APM)
- low-level pattern / Asynchronous Programming Model
- low performance overhead / Asynchronous Programming Model
- complicated implementation / Asynchronous Programming Model
- coupling, between asynchronous operation provider and consumer / Asynchronous Programming Model
- features, Event-based Asynchronous Pattern (EAP)
- high-level pattern / Event-based Asynchronous Pattern
- high overhead / Event-based Asynchronous Pattern
- intended for UI components / Event-based Asynchronous Pattern
- complicated implementation / Event-based Asynchronous Pattern
- couping, between asynchronous operation provider and consumers / Event-based Asynchronous Pattern
- features, Task-based Asynchronous Pattern (TAP)
- low overhead / Task-based Asynchronous Pattern
- high-level / Task-based Asynchronous Pattern
- comfortable to use / Task-based Asynchronous Pattern
- language support, in C#/VB / Task-based Asynchronous Pattern
- Task and Task<T> are first-class objects / Task-based Asynchronous Pattern
- avoidance, of side effects / Task-based Asynchronous Pattern
- fine-grained approach
- about / Understanding granularity
- selecting / Choosing the coarse-grained or fine-grained approach
- fine-grained lock operations / Fine-grained lock operations
- fire-and-forget tasks
- about / Fire-and-forget tasks
- foreach loop / Process Tasks in Completion Order
- fork/join pattern
- about / Concurrent patterns
- future
- about / Task composition
G
- 4-gigabyte tuning / The number of threads
- granularity
- about / Understanding granularity
H
- heisenbugs
- about / Heisenbugs
- high coupling
- about / Task composition
- Hyper-Threading technology / The number of threads
- hyperthreading technology / The importance of asynchrony for UI
I
- I/O and CPU-bound tasks / I/O and CPU-bound tasks
- I/O Completion Port (IOCP) / I/O and CPU-bound tasks
- input/output threads / Using the thread pool
- integration tests
- about / Integration tests
- interlocked internals
- working / Interlocked internals
L
- latency approach, with TPL
- legacy code support scenario / Event-based Asynchronous Pattern
- load testing / Load testing and scalability
- lock-free code
- writing / Writing lock-free code
- lock-free operations / Lock-free operations
- lock-free queue
- about / The lock-free queue
- lock-free stack
- about / The lock-free stack
- lock localization
- about / Lock localization
- locks
- using / Using locks
- lock statement
- about / Lock statement
- low coupling
- about / Task composition
M
- memory barrier
- memory model
- message loop / UI threads and message loops
- message pump / UI threads and message loops
- Monitor class
- about / Monitor class
- mutex synchronization primitive
- about / The lock-free stack
N
- .NET
- concurrent collections / Concurrent collections in .NET
- .NET 4.0+
- Producer/Consumer pattern / The Producer/Consumer pattern in .NET 4.0+
O
- only for legacy code support scenario / Asynchronous Programming Model
- optimization strategy
- about / Optimization strategy
- lock localization / Lock localization
- shared data minimization / Shared data minimization
- OS wait objects
- using, with WaitHandle / Using OS wait objects with WaitHandle
- OWIN Web API framework
- about / The OWIN Web API framework
P
- Parallel class
- using / Using the Parallel class
- Parallel.Invoke method / Parallel.Invoke
- Parallel.For method / Parallel.For and Parallel.Foreach
- Parallel.Foreach method / Parallel.For and Parallel.Foreach
- parallel pipeline
- about / Concurrent patterns
- implementing / Parallel pipelines
- parallel programs
- troubleshooting / How troubleshooting parallel programs is different
- heisenbugs / Heisenbugs
- parallel solution
- creating, with Task Parallel Library / Creating a parallel solution with Task Parallel Library
- performance issues / Performance issues
- performance measurement
- PLINQ / Concurrent collections in .NET
- producer/consumer pattern
- about / Concurrent patterns
- Producer/Consumer pattern
- about / The Producer/Consumer pattern
- implementing / Custom Producer/Consumer pattern implementation
- in .NET 4.0+ / The Producer/Consumer pattern in .NET 4.0+
- profiling
- promise
- about / Task composition
R
- race condition
- about / What's the problem?
- sample / What's the problem?
- reader writer lock
- about / Reader-writer lock
- ReaderWriterLockSlim
- used, for implementing cache / Implementing a cache with ReaderWriterLockSlim
- ready queue
- about / Monitor class
- real asynchronous I/O operations
- release fence
- replicable task / Parallel.Invoke
- robust and performant applications
- creating, stages / Heisenbugs
- RunLongRunningOperation method / ConcurrentDictionary
S
- scalability / Server applications, Load testing and scalability
- server application
- about / Server applications
- types / Server applications
- scalability / Server applications
- scale vertically / Server applications
- horizontal scalability / Server applications
- shared data minimization
- about / Shared data minimization
- simple synchronous solution
- creating / Creating a simple synchronous solution
- Single-Threaded Apartment (STA) / Performance issues
- spin lock
- about / Spin lock
- Thread.SpinWait / Thread.SpinWait
- System.Threading.SpinWait / System.Threading.SpinWait
- System.Threading.SpinLock / System.Threading.SpinLock
- standard collections / Standard collections and synchronization primitives
- synchronization context
- about / Synchronization context
- synchronization contexts / Execution and synchronization contexts
- synchronization primitives / Standard collections and synchronization primitives
- System.Threading.Interlocked class
- System.Threading.SpinLock
- about / System.Threading.SpinLock
- System.Threading.SpinWait
- about / System.Threading.SpinWait
- System.Threading.Task class / Understanding granularity
T
- Tables class
- m_buckets / Implementation details
- m_locks / Implementation details
- m_countPerLock / Implementation details
- m_comparer / Implementation details
- Task-based Asynchronous Pattern (TAP)
- about / Task-based Asynchronous Pattern
- features / Task-based Asynchronous Pattern
- task cancellation
- about / Task cancellation
- flag, checking / Checking a flag
- exception, throwing / Throwing an exception
- OS wait objects, using with WaitHandle / Using OS wait objects with WaitHandle
- with callbacks / Cancellation using callbacks
- task composition
- about / Task composition
- Task Parallel Library
- parallel solution, creating with / Creating a parallel solution with Task Parallel Library
- Task Parallel Library (TPL)
- about / Understanding granularity
- Task Parallel Library, features
- about / Other useful TPL features
- Task.Delay / Task.Delay
- Task.Yield / Task.Yield
- task scheduler
- tasks hierarchy
- about / Tasks hierarchy
- tests
- writing / Writing tests
- load tests / Load tests
- unit tests / Unit tests
- Thread.SpinWait
- about / Thread.SpinWait
- thread contention / Standard collections and synchronization primitives
- thread pool
- using / Using the thread pool
- threads
- overview / The number of threads
U
- UI thread / UI threads and message loops
V
- volatile
- volatile keyword
- volatile read
- volatile write
W
- WaitHandle
- OS wait objects, using with / Using OS wait objects with WaitHandle
- waiting queue
- about / Monitor class
- while loop / Fine-grained lock operations, Process Tasks in Completion Order
- Windows Forms
- worker threads / Using the thread pool
- work stealing / ConcurrentBag<T>
X
- xampp
- about / Load testing and scalability