awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
chriskohlhoff avatar

chriskohlhoff/asio

0
View on GitHub↗
5,896 stars·1,364 forks·C++·23 viewsthink-async.com/Asio↗

Asio

Asio is a C++ library for performing network and low-level I/O operations using a consistent asynchronous model that avoids blocking program execution. It provides a portable, cross-platform interface for network socket communication across different operating systems, and manages multiple asynchronous operations without requiring explicit thread management or locking.

The library implements a proactor-based asynchronous model where operations post completion handlers to a queue for later execution, and wraps operating system I/O multiplexing mechanisms like epoll, kqueue, IOCP, and select into a uniform interface. It supports multiple completion token types including callbacks, futures, and coroutines through a uniform handler interface, and serialises completion handler execution through strand objects to eliminate explicit locking in concurrent code. Asio also provides mutable and constant buffer sequences for efficient scatter-gather read and write operations, and integrates deadline and steady timers with the I/O event loop for time-based asynchronous operations.

The library enables building asynchronous I/O operations, handling network communication, and managing concurrent tasks. It includes error handling capabilities for returning clear messages when requested resources are unavailable.

Features

  • Asynchronous I/O Libraries - Provides a non-blocking interface for system I/O operations via event loops.
  • Completion Token Abstractions - Supports multiple completion token types including callbacks, futures, and coroutines through a uniform handler interface.
  • Proactor - Implements a proactor-based completion model where operations post handlers to a queue for later execution.
  • Cross-Platform Networking - Provides a portable, cross-platform interface for network socket communication across different operating systems.
  • Socket Networking - Sends and receives data across network sockets using a portable interface that works on different operating systems.
  • Non-Blocking Socket I/O - Enables non-blocking reading and writing of network sockets to handle many concurrent connections.
  • Completion Token Handlers - Provides a uniform handler interface supporting callbacks, futures, and coroutines for async C++ programming.
  • Non-Blocking I/O Interfaces - Provides interfaces that allow the system to initiate I/O operations and continue execution without waiting for completion.
  • Handle Abstractions - Handles file descriptors, sockets, and timers through a consistent non-blocking model.
  • Cross-Platform Asynchronous I/O Abstractions - Provides a unified interface for performing non-blocking network and file operations across different operating systems.
  • Proactor-Based Concurrency - Manages multiple network and file operations concurrently without explicit thread synchronization or locking.
  • I/O Event Loop Timers - Integrates deadline and steady timers with the I/O event loop for time-based asynchronous operations.
  • Async I/O Runtimes - Provides event loops and task schedulers for executing non-blocking I/O operations.
  • Concurrency Management Libraries - Manages multiple asynchronous operations without requiring explicit thread management or locking.
  • Strand-Based Serializers - Serialises completion handler execution through strand objects to eliminate explicit locking in concurrent code.
  • Asynchronous Concurrency Managers - Manages multiple asynchronous operations without requiring explicit thread management or locking.
  • Strand-Based Serializers - Ships strand objects that serialize handler execution, enabling lock-free concurrency for async I/O.
  • Non-blocking I/O - Uses non-blocking input and output to handle multiple operations across processor cores.
  • Platform Event Loop Adapters - Wraps platform-native event loops (epoll, kqueue, IOCP, select) behind a uniform API for cross-platform portability.
  • Event Loop Schedulers - Runs multiple I/O operations in parallel by scheduling them on an event loop that resumes tasks on completion.
  • Buffer Sequences - Provides mutable and constant buffer sequences for efficient scatter-gather read and write operations.
  • I/O Event Loop Timers - Implements deadline and steady timers that integrate with the I/O event loop for time-based asynchronous operations.
  • Asynchronous Task Composition - Chains multiple async tasks together using a consistent pattern to simplify complex input/output workflows.
  • Multiplexing Abstractions - Selects the most efficient system-level event notification mechanism available on the host operating system.
  • Vectored I/O - Provides mutable and constant buffer sequences for efficient scatter-gather read and write operations.
  • Asynchronous Event Loop - Cross-platform library for network and low-level I/O.
  • Network Libraries - Cross-platform C++ library for network and low-level I/O.
  • Serial Port Communication - Portable classes for serial port communication and I/O.
  • Web and Networking - Asynchronous network and low-level I/O library.

Star history

Star history chart for chriskohlhoff/asioStar history chart for chriskohlhoff/asio

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does chriskohlhoff/asio do?

Asio is a C++ library for performing network and low-level I/O operations using a consistent asynchronous model that avoids blocking program execution. It provides a portable, cross-platform interface for network socket communication across different operating systems, and manages multiple asynchronous operations without requiring explicit thread management or locking.

What are the main features of chriskohlhoff/asio?

The main features of chriskohlhoff/asio are: Asynchronous I/O Libraries, Completion Token Abstractions, Proactor, Cross-Platform Networking, Socket Networking, Non-Blocking Socket I/O, Completion Token Handlers, Non-Blocking I/O Interfaces.

What are some open-source alternatives to chriskohlhoff/asio?

Open-source alternatives to chriskohlhoff/asio include: tokio-rs/mio — Mio is a low-level I/O library for Rust that provides an event-driven framework for monitoring multiple network… smol-rs/smol — Smol is a lightweight Rust asynchronous runtime and task executor. It provides a suite of foundational tools for… riba2534/tcp-ip-networknote — TCP-IP-NetworkNote is a comprehensive technical reference and guide for implementing network communication using TCP… libuv/libuv — libuv is a cross-platform asynchronous I/O library that provides an abstraction layer for event-driven networking,… boostorg/beast — Beast is a C++ library for implementing low-level HTTP and WebSocket clients and servers. It functions as an… yjhjstz/deep-into-node — This project is a technical study and analysis guide focused on the internal architecture of Node.js. It provides an…

Open-source alternatives to Asio

Similar open-source projects, ranked by how many features they share with Asio.
  • tokio-rs/miotokio-rs avatar

    tokio-rs/mio

    7,024View on GitHub↗

    Mio is a low-level I/O library for Rust that provides an event-driven framework for monitoring multiple network sockets and file descriptors. It acts as a portable wrapper for operating system native polling systems, including epoll, kqueue, and IOCP, allowing applications to trigger events when resources are ready for reading or writing without blocking the execution thread. The library provides a non-blocking socket interface for managing TCP, UDP, and Unix sockets. It distinguishes itself through a vectored I/O implementation, enabling scatter-gather reads and writes across multiple buffer

    Rustasynchronousnetworkingnon-blocking
    View on GitHub↗7,024
  • smol-rs/smolsmol-rs avatar

    smol-rs/smol

    4,979View on GitHub↗

    Smol is a lightweight Rust asynchronous runtime and task executor. It provides a suite of foundational tools for scheduling and executing asynchronous futures, managing background workloads, and handling non-blocking network and file operations. The project includes a compatibility layer for adapting asynchronous types and execution contexts, enabling futures to run across different runtime ecosystems. It also features a mechanism to offload synchronous I/O and CPU-intensive operations to dedicated worker thread pools to prevent runtime stalls. Its capabilities cover non-blocking network I/O

    Rustasyncconcurrencyfutures
    View on GitHub↗4,979
  • riba2534/tcp-ip-networknoteriba2534 avatar

    riba2534/TCP-IP-NetworkNote

    2,505View on GitHub↗

    TCP-IP-NetworkNote is a comprehensive technical reference and guide for implementing network communication using TCP and UDP sockets in C and C++. It provides a detailed manual for using the POSIX socket API and covers the implementation of network protocols, synchronous and asynchronous I/O patterns, and concurrent programming models. The project is distinguished by its focus on cross-platform networking, offering a detailed comparison of socket implementation details and adaptation utilities between Linux and Windows Winsock environments. It specifically addresses the differences in header

    C
    View on GitHub↗2,505
  • libuv/libuvlibuv avatar

    libuv/libuv

    26,912View on GitHub↗

    libuv is a cross-platform asynchronous I/O library that provides an abstraction layer for event-driven networking, filesystem operations, and system signals. It utilizes a non-blocking event loop to coordinate asynchronous tasks and I/O events across different operating systems. The project features a unified interface for managing TCP, UDP, and DNS resolution, alongside an inter-process communication layer for sharing sockets via named pipes and Unix domain sockets. To prevent blocking the main execution loop, it includes a multi-platform thread pool for offloading computationally expensive

    Casynchronousdeep-ioio
    View on GitHub↗26,912
See all 30 alternatives to Asio→