Logical thread
A logical thread is an independent line of computation managed at the program or runtime level without necessarily corresponding to an operating-system thread.
Functional Programming in Scala, Second Edition
A logical thread is an independent line of computation used to describe concurrent execution without necessarily denoting a physical operating-system thread.
- How it is used
- Explains how functional programs express concurrent work without tying each computation directly to an operating-system thread.
- How deep it goes
- Defines the physical-versus-logical distinction and traces parallel filtering and fixed-pool deadlock, without detailing scheduler internals.
- Examples
- Uses parallel filtering, asyncF, sequence, fork nesting, and fixed-size thread pools as concrete illustrations.
- What you can do after
- Apply it via Par by separating logical computation structure from executor-backed execution and recognizing a nested-fork deadlock risk.
Read how Functional Programming in Scala, Second Edition explains logical thread →
Learn Concurrent Programming with Go
A user-level thread is a thread managed by a language runtime or user-space library rather than directly by the operating system kernel.
- How it is used
- Frames goroutines as application-level concurrent executions managed by Go’s runtime rather than directly by the operating system.
- How deep it goes
- Explains runtime scheduling, state management, and context switching, while noting that Go’s specification does not guarantee a specific implementation.
- Examples
- Uses a diagram of user-level threads inside one kernel-level thread and goroutines mapped onto kernel-level threads.
- What you can do after
- Understand how Go separates goroutine creation from operating-system thread management.
Read how Learn Concurrent Programming with Go explains logical thread →
Grokking Concurrency
A user-level thread is a thread managed by a user-space runtime or library rather than directly by the operating system.
- How it is used
- Uses developer-managed tasks to share one worker thread during cooperative multitasking and asynchronous I/O.
- How deep it goes
- Explains scheduling behavior, switching costs, resource sharing, and yielding, but stops short of implementation code.
- Examples
- Uses millions of coroutines, single-threaded scalable applications, and I/O-heavy servers and databases as concrete applications.
- What you can do after
- Evaluate when lightweight cooperative tasks suit concurrent I/O workloads and recognize the danger of failing to yield.
Related concepts
- threadcontrasts with · A thread is an independently schedulable sequence or context of execution within a program or process.
- cooperative multitaskingused by · Cooperative multitasking is a scheduling technique in which executing tasks voluntarily yield control at defined points so other tasks can run.
- goroutineincludes · A goroutine is a lightweight function execution unit managed by the Go runtime that runs concurrently with other program activity.
- Go runtimeused by · The Go runtime is the execution support system for Go programs, providing services such as goroutine scheduling, memory management, and garbage collection.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.


