loondri parent
This article talks about making Linux pipes faster, but other methods like shared memory or message queues might still be quicker. For example, in systems that need to move a lot of data quickly, the extra steps with pipes could slow things down. Also, when many threads are sharing data, pipes might cause more problems than other methods. So, the improvements in the article might not help much in real-world situations where speed is crucial.
Can you give some examples? When batching data, you benefit from picking something like io_uring. But for two-way communication, you still need to notify either side when data is ready (maybe you don't want to consume cpu just polling), and it isn't clear to me how those options handle that synchronization faster than pipes.
The main thing io_uring gives you is avoiding multiple syscalls.
With a pipe you can’t really avoid that. With a shared memory queue/ring buffer you can write to the memory without any syscalls.
But you need to build synchronisation yourself (e.g., using semaphores for example). You don’t necessarily need to poll.