Saya punya 2 aplikasi:
- Produser (N instance)
- Konsumen (1 contoh)
Saat ini saya menuliskan hasil antara dari produsen, dan kemudian konsumen membaca file-file ini dari disk dan menghasilkan hasil akhir .
Saya ingin meminimalkan I / O ini dengan "mengalirkan" output dari produsen langsung ke konsumen.
Saya menemukan pipa bernama (mkfifo) dan contoh berikutnya di sini . Ini terlihat hebat, tetapi apa yang saya tidak dapat menentukan adalah bagaimana ini sebenarnya diterapkan? Apakah antrian FIFO baru saja disangga melalui file? Jika demikian, itu mungkin tidak akan membantu saya. Saya ingin konten mengalir "melalui memori" sepenuhnya tanpa menggunakan disk. Mungkin ini tidak mungkin di seluruh proses?
Tidak masalah apakah hasil Anda benar-benar didukung disk atau tidak, karena jika tersedia cukup memori maka akan di-cache dan tidak ada disk IO aktual yang dilakukan. Sebaliknya, jika didukung memori dan tidak tersedia cukup memori, dapat ditukar dengan disk.
Jika saya menebak, saya akan mengatakan bahwa pipa sebenarnya berbasis memori, tetapi kemudian, ini hanya akan mengubah apakah data yang antri dipertahankan antara reboot.
Yang harus Anda urus adalah karena Anda memiliki banyak produsen, tulisan Anda harus bersifat atomik sehingga tidak saling terkait dalam antrian. Lihat
man 7 pipe
untuk perincian tentang cara memastikan bahwa penulisan adalah atom.sumber