Instans Pipa Bernama
Server pipa paling sederhana membuat satu instans pipa, terhubung ke satu klien, berkomunikasi dengan klien, memutuskan sambungan dari klien, menutup handel pipa, dan mengakhiri. Namun, lebih umum bagi server pipa untuk berkomunikasi dengan beberapa klien pipa. Server pipa dapat menggunakan satu instans pipa untuk terhubung dengan beberapa klien pipa dengan menyambungkan dan memutuskan sambungan dari setiap klien secara berurutan, tetapi performa akan buruk. Server pipa harus membuat beberapa instans pipa untuk menangani beberapa klien secara efisien secara bersamaan.
Ada tiga strategi dasar untuk melayani beberapa instans pipa.
- Buat utas terpisah untuk setiap instans pipa. Untuk contoh server pipa multithreaded, lihat Multithreaded Pipe Server.
- Gunakan operasi yang tumpang tindih dengan menentukan strukturTUMPANG TINDIH dalamReadFile, fungsiWriteFile , dan ConnectNamedPipe. Misalnya, lihat Server Pipa Bernama Menggunakan I/O yang Tumpang Tindih.
- Gunakan operasi yang tumpang tindih dengan menggunakan fungsi ReadFileEx dan WriteFileEx, yang menentukan rutinitas penyelesaian yang akan dijalankan saat operasi selesai. Misalnya, lihat Server Pipa Bernama Menggunakan Rutinitas Penyelesaian.
Server pipa multithread paling mudah ditulis, karena utas untuk setiap instans menangani komunikasi untuk satu klien pipa. Sistem mengalokasikan waktu prosesor ke setiap utas sesuai kebutuhan. Tetapi setiap utas menggunakan sumber daya sistem, yang merupakan kerugian untuk server pipa yang menangani sejumlah besar klien.
Dengan server satu utas, lebih mudah untuk mengoordinasikan operasi yang memengaruhi beberapa klien, dan lebih mudah untuk melindungi sumber daya bersama dari akses simultan oleh beberapa klien. Tantangan dari server berulir tunggal adalah membutuhkan koordinasi operasi yang tumpang tindih untuk mengalokasikan waktu prosesor untuk menangani kebutuhan klien secara bersamaan.