Skip to content

Latest commit

 

History

History
28 lines (19 loc) · 2.14 KB

notes-on-async.md

File metadata and controls

28 lines (19 loc) · 2.14 KB

Asynchronous Programming, Non-Blocking Operations, Multithreading, and Multitasking

Asynchronous programming, non-blocking operations, multithreading, and multitasking are related concepts in programming, with some important differences.

Asynchronous

  • Definition: Allows a program to start an operation and continue with other tasks before the operation finishes.
  • Example use: To handle long-running tasks (e.g., I/O operations, network requests) without blocking the main execution flow.
  • Characteristic: Asynchronous does not imply multithreading, nor is it necessarily non-blocking. Some asynchronous operations allow execution to be paused and resumed or cancelled.

Non-blocking

  • Definition: Non-blocking operations are asynchronous opterations do not block the main thread or event loop, allowing other operations to continue.
  • Example use: Allows the user interface to remain responsive to user input while background computations continue or ensures that the main execution thread continues to do important work (e.g., respond to events).
  • Characteristic: Execution returns quickly to the main thread or the UI.

Multithreaded

  • Definition: Uses multiple execution threads within a single process to execute different code paths concurrently.
  • Example use: Can be used to increase the CPU load or perform multiple tasks in parallel.
  • Characteristic: Work done in a thread can be synchronous or asynchronous. Threads share the same memory space but have their own execution stack and instruction pointer. On multiple processor systems, simultaneous memory read/writes are possible.

Multitasking

  • Definition: A family of techniques (e.g., preemptive multitasking, cooperative multitasking) for executing multiple tasks or processes in an interleaved manner.
  • Example use: Can provide the impression of parallelism on single CPU systems, where tasks do not literally execute simultaneously but are time-sliced. On multi-core systems, tasks can run truly concurrently.
  • Characteristic: On multiple processor systems, simultaneous memory read/writes are possible if multi-tasking is replaced with threads.