1

IO completion port threads and the IO completion port itself - does it only exist on the windows operating system, or on Linux/MacOS and various other Operating Systems, they still exist and are being used?

SpiritBob
  • 2,355
  • 3
  • 24
  • 62
  • 1
    A quick google search could have answered your question I think: https://stackoverflow.com/q/2794535/7313891 – Laurent Jul 27 '21 at 13:41
  • 1
    You might want to re-think those tags -- this isn't about C#, .NET, async/await, or the thread pool -- it's much more about the OS itself – canton7 Jul 27 '21 at 13:41

1 Answers1

2

I/O Completion Ports are a Windows-only API, but the other common platforms do have roughly equivalent functionality when it comes to async I/O.

Linux has epoll and io_uring. BSD/MacOS has kqueue. Windows also has Registered I/O.

The largest difference will be that IOCP has a special thread pooling feature designed to assist a tiny bit with otherwise very inefficient blocking I/O and contention scenarios, while the others leave that for you.

Cory Nelson
  • 29,236
  • 5
  • 72
  • 110
  • 1
    Could you slightly expand on the notion of "having blocking-based concurrency limits"? Do you perhaps mean the fact that all IOCP threads block waiting for a signal that an I/O operation has completed? – SpiritBob Jul 27 '21 at 13:51