Total Halaman yg ditampilkan

27 Desember 2011

Ringkasan: Penerapan konsep-konsep Nonblocking I/O, threading, asynchronous I/O, dan multiplexing.



1. Nonblocking I / O
Bagaimana sebuah program yang mempunyai tugas lain untuk melakukan tugasnya sambil menunggu panggilan selesai (Misalnya, memperbarui  kursor "sibuk"atau menanggapi permintaan pengguna)? Program-program ini mungkin tidak memiliki waktu untuk menunggu pada pemanggilan metode yang diblokir. Untungnya, beberapa mekanisme yang tersedia untuk menghindari perilaku yang tidak diinginkan memblokir. Kita punya tiga masalah di sini: (1) I / O prechecking status, (2) memblokir panggilan timeout, dan (3) Nonblocking soket.

2. Multiplexing
Setiap versi echo server berurusan dengan hanya satu koneksi klien pada suatu waktu. Namun, sering terjadi aplikasi membutuhkan kemampuan untuk melakukan I/O pada saluran secara bersamaan. Misalnya,kita ingin menyediakan layanan pada beberapa port echo  sekaligus. Masalah ini menjadi jelas segera setelah Anda mempertimbangkan apa yang terjadi setelah server menciptakan dan mengikat soket ke port masing-masing.

3. Threads
Pada bagian sebelumnya kita menunjukkan bagaimana menggunakan Nonblocking I/O fitur .NET untuk menjalankan kode lain sambil menunggu operasi socket. Ada dua kelemahan  utama pendekatan ini Nonblocking. Pertama, pemungutan suara untuk menyelesaikan metode socket cukup tidak efisien. Jika Anda tidak cukup segera jajak pendapat, waktu yang hilang setelah operasi soket selesai. Jika Anda terlalu cepat jajak pendapat, operasi tidak akan siap dan Anda juga harus memeriksa blok atau kembali lagi nanti. Kedua, jumlah koneksi yang dapat ditangani secara bersamaan terbatas. Jika menghubungkan klien sementara yang lain sudah sedang dilayani, server tidak akan echo baru data client sampai selesai dengan klien saat ini, meskipun klien baru akan mampu mengirim data secepat ini menghubungkan. Jenis server dikenal sebagai server iteratif. Iterative server menangani klien secara berurutan, finishing dengan satu klien sebelum melayani berikutnya. Mereka bekerja terbaik untuk aplikasi dimana setiap klien membutuhkan sedikit jumlah terbatas waktu koneksi server, namun jika waktu untuk menangani klien bisa panjang, tunggu dialami oleh klien berikutnya mungkin tidak bisa diterima.

4.  Asynchronous I/O
Setelah Anda memahami perbedaan antara sinkron dan asinkron asynchronous API. Secara ringkas, meliputi:
1.      Mulai Metode: panggilan mulai mengambil (di samping argumen di sinkron versi metode) turunan AsyncCallback menentukan callback yang metode dan sebuah objek yang mengandung semua negara yang ditetapkan pengguna. Mulai kembali memanggil IAsyncResult yang dapat digunakan untuk jajak pendapat atau memblokir di mengembalikan call.
2.      Negara callback: callback Metode dilewatkan negara (mulai objek call argumen) yang tersimpan dalam properti AsyncState dari contoh IAsyncResult.
3.      Akhir Metode: memanggil metode akhir sebagai sebuah argumen mengambil contoh IAsyncResult dikembalikan oleh permintaan panggilan balik, dan mengembalikan nilai yang sinkron versi panggilan akan kembali.

Tidak ada komentar:

Posting Komentar