Misalkan ada dua utas, yang berkomunikasi dengan tidak sinkron mengirim pesan data satu sama lain. Setiap utas memiliki beberapa jenis antrian pesan.
Pertanyaan saya sangat rendah: Apa yang bisa diharapkan menjadi cara paling efisien untuk mengelola memori? Saya dapat memikirkan beberapa solusi:
- Pengirim membuat objek melalui
new
. Panggilan penerimadelete
. - Memory pooling (untuk mentransfer memori kembali ke pengirim)
- Pengumpulan sampah (mis., Boehm GC)
- (Jika objek cukup kecil) salin dengan nilai untuk menghindari alokasi tumpukan sepenuhnya
1) adalah solusi yang paling jelas, jadi saya akan menggunakannya untuk prototipe. Kemungkinannya sudah cukup baik. Tetapi terlepas dari masalah spesifik saya, saya bertanya-tanya teknik mana yang paling menjanjikan jika Anda mengoptimalkan kinerja.
Saya berharap pooling menjadi yang terbaik secara teoritis, terutama karena Anda dapat menggunakan pengetahuan ekstra tentang aliran informasi antara utas. Namun, saya khawatir itu juga yang paling sulit untuk dilakukan dengan benar. Banyak penyetelan ... :-(
Pengumpulan sampah harus cukup mudah untuk ditambahkan setelahnya (setelah solusi 1), dan saya berharap ini akan bekerja dengan sangat baik. Jadi, saya kira itu adalah solusi paling praktis jika 1) ternyata terlalu tidak efisien.
Jika objek kecil dan sederhana, salin berdasarkan nilai mungkin yang tercepat. Namun, saya khawatir hal itu memaksa pembatasan yang tidak perlu pada implementasi pesan yang didukung, jadi saya ingin menghindarinya.