A Universal I/O Abstraction for C++ -- Corentin Jabot

SG-11, the study group charged of all things concurrency and parallelism made forward progress and sent the proposal to LEWG - with the hope of landing a future revision in the C++23 draft. This is rather big news given that this work has been brewing for about a decade.

A Universal I/O Abstraction for C++

by Corentin Jabot

From the article:

The year is 2020 and even consummer CPUs feature double digits number of cores, storage offers 10GB/s read speeds and networks have to accommodate ever-growing traffic.

For a long time, the C++ committee seemed to think that either async file I/O didn’t make sense or was fundamentally irreconcilable with networking. This belief would lead to two inter-incompatible APIs in the standard, which would be a nightmare in term of usability (aka ASIO and AFIO).

It seems that there is finally a way to resolve these divides:

io_uring offers very high performance I/O which doesn’t discriminate on device type.
Sender Receiver provides the composable, low-cost, non-allocating abstraction while offering a simple mental model for asynchronous operations lifetime.
Coroutines make asynchronous i/o dead simple for the 99% use case.
Asynchronous Networking is nice.

Asynchronous I/O is better.

AWAIT ALL THE THINGS!

Add a Comment

You must sign in or register to add a comment.

Comments (0)

There are currently no comments on this entry.