GNU/Linux >> Linux Esercitazione >  >> Linux

Porte di completamento Linux e I/O?

Se stai cercando qualcosa esattamente come IOCP, non lo troverai, perché non esiste.

Windows utilizza un modello di notifica al completamento (da cui I/O Completamento porti). Avvia un'operazione in modo asincrono e ricevi una notifica quando l'operazione è stata completata.

Le applicazioni Linux (e la maggior parte degli altri simili a Unix) generalmente utilizzano un modello di notifica pronto. Si riceve una notifica che il socket può essere letto o scritto senza blocco. Quindi, esegui l'operazione di I/O, che non si bloccherà.

Con questo modello, non hai bisogno I/O asincrono. I dati vengono immediatamente copiati dentro/fuori dal buffer del socket.

Il modello di programmazione per questo è piuttosto complicato, motivo per cui esistono librerie di astrazione come libevent. Fornisce un modello di programmazione più semplice e astrae le differenze di implementazione tra i sistemi operativi supportati.

C'è anche una notifica sul modello pronto in Windows (seleziona o WSAWaitForMultipleEvents), che potresti aver visto prima. Non è in grado di scalare su un numero elevato di socket, quindi non è adatto per applicazioni di rete ad alte prestazioni.

Non lasciarti scoraggiare:Windows e Linux sono sistemi operativi completamente diversi. Qualcosa che non si adatta bene su un sistema potrebbe funzionare molto bene sull'altro. Questo approccio in realtà funziona molto bene su Linux, con prestazioni paragonabili a IOCP su Windows.


IOCP è pronunciato "I/O asincrono" su varie piattaforme UNIX:

  • POSIX AIO è lo standard
  • Kernel AIO, epoll e io_uring sembrano essere implementazioni specifiche di Linux
  • Kqueue è l'implementazione *BSD e Mac OSX
  • L'interfaccia MPI (Message Passing Interface) è un'opzione per l'elaborazione ad alte prestazioni
  • riferimento Boost obbligatorio - Boost.Asio

Linux
  1. Come accedere ai filesystem Linux in Windows 10 e WSL 2

  2. Interoperabilità Windows e Linux:uno sguardo a Samba

  3. Come eseguire il dual boot di Windows 10 e MX Linux

  4. Come si esegue l'I/O della console non bloccante su Linux in C?

  5. Come fermare il processo "ininterrotto" su Linux?

Come eseguire il dual boot di Kali Linux e Windows 10

Come guardare le porte TCP e UDP in tempo reale

Come creare un server TeamSpeak su Linux, Windows e macOS

10 Linux iostat Comando per segnalare la CPU e le statistiche di I/O

Come realizzare una USB multiboot in Linux e Windows

Condivisione di file tra Linux Mint e Windows 10