GNU/Linux >> Belajar Linux >  >> Linux

Linux dan port penyelesaian I/O?

Jika Anda mencari sesuatu yang persis seperti IOCP, Anda tidak akan menemukannya, karena tidak ada.

Windows menggunakan model notifikasi saat penyelesaian (karenanya I/O Penyelesaian Pelabuhan). Anda memulai beberapa operasi secara asinkron, dan menerima pemberitahuan saat operasi tersebut selesai.

Aplikasi Linux (dan kebanyakan Unix-sama lainnya) umumnya menggunakan notify on ready model. Anda menerima pemberitahuan bahwa soket dapat dibaca dari atau ditulis tanpa pemblokiran. Kemudian, Anda melakukan operasi I/O, yang tidak akan memblokir.

Dengan model ini, Anda tidak membutuhkan I/O asinkron. Data segera disalin ke/keluar dari buffer soket.

Model pemrograman untuk ini agak rumit, itulah sebabnya ada pustaka abstraksi seperti libevent. Ini memberikan model pemrograman yang lebih sederhana, dan menghilangkan perbedaan implementasi antara sistem operasi yang didukung.

Ada pemberitahuan tentang model siap di Windows juga (pilih atau WSAWaitForMultipleEvents), yang mungkin telah Anda lihat sebelumnya. Tidak dapat menskalakan soket dalam jumlah besar, sehingga tidak cocok untuk aplikasi jaringan berperforma tinggi.

Jangan biarkan hal itu membuat Anda kecewa - Windows dan Linux adalah sistem operasi yang sama sekali berbeda. Sesuatu yang tidak diskalakan dengan baik di satu sistem mungkin bekerja sangat baik di sistem lain. Pendekatan ini sebenarnya bekerja sangat baik di Linux, dengan kinerja yang sebanding dengan IOCP di Windows.


IOCP diucapkan "asynchronous I/O" pada berbagai platform UNIX:

  • POSIX AIO adalah standar
  • Kernel AIO, epoll, dan io_uring tampaknya merupakan implementasi khusus Linux
  • Kqueue adalah *implementasi BSD dan Mac OSX
  • Message Passing Interface (MPI) adalah opsi untuk komputasi performa tinggi
  • referensi Peningkatan wajib - Boost.Asio

Linux
  1. Cara Mengakses Sistem File Linux di Windows 10 dan WSL 2

  2. Interoperabilitas Windows dan Linux:Sekilas tentang Samba

  3. Bagaimana cara menghentikan proses 'tidak terputus' di Linux?

  1. Cara dual boot Windows 10 dan MX Linux

  2. Bagaimana Anda melakukan non-blocking console I/O di Linux di C?

  3. Men-debug latensi I/O Linux

  1. Aktifkan dan jalankan podman di Windows menggunakan Linux

  2. Buat koneksi SSH antara Windows dan Linux

  3. Nova-agent (Linux) dan agen Rackspace (Windows)