Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ada dua cara untuk menerapkan multitugas: sebagai satu proses dengan beberapa utas atau sebagai beberapa proses, masing-masing dengan satu atau beberapa utas. Aplikasi dapat menempatkan setiap utas yang memerlukan ruang alamat privat dan sumber daya privat ke dalam prosesnya sendiri, untuk melindunginya dari aktivitas utas proses lainnya.
Proses multithread dapat mengelola tugas-tugas yang bersifat eksklusif satu sama lain dengan thread, seperti menyediakan antarmuka pengguna dan melakukan penghitungan di latar belakang. Membuat proses multithreaded juga dapat menjadi cara mudah untuk menyusun program yang melakukan beberapa tugas serupa atau identik secara bersamaan. Misalnya, server pipa bernama dapat membuat utas untuk setiap proses klien yang terhubung ke pipa. Utas ini mengelola komunikasi antara server dan klien. Proses Anda dapat menggunakan beberapa utas untuk menyelesaikan tugas-tugas berikut:
- Mengelola input untuk beberapa jendela.
- Mengelola input dari beberapa perangkat komunikasi.
- Membedakan tugas dengan berbagai prioritas. Misalnya, utas berprioritas tinggi mengelola tugas penting waktu, dan utas berprioritas rendah melakukan tugas lain.
- Izinkan antarmuka pengguna untuk tetap responsif, sambil mengalokasikan waktu ke tugas latar belakang.
Biasanya lebih efisien bagi aplikasi untuk menerapkan multitugas dengan membuat satu proses multithread, daripada membuat beberapa proses, karena alasan berikut adalah:
- Sistem dapat melakukan perpindahan konteks lebih cepat untuk utas daripada untuk proses, karena proses membawa lebih banyak beban daripada utas (konteks proses lebih luas dibandingkan dengan konteks utas).
- Semua utas proses memiliki ruang alamat yang sama dan dapat mengakses variabel global proses, yang dapat menyederhanakan komunikasi antar utas.
- Semua utas dari suatu proses dapat berbagi pegangan terbuka ke sumber daya, seperti file dan saluran.
Ada teknik lain yang dapat Anda gunakan sebagai pengganti multithreading. Yang paling signifikan dari ini adalah sebagai berikut: input dan output asinkron (I/O), port penyelesaian I/O, panggilan prosedur asinkron (APC), dan kemampuan untuk menunggu beberapa peristiwa.
Satu utas dapat memulai beberapa permintaan I/O yang memakan waktu dan dapat berjalan secara bersamaan menggunakan I/O asinkron. I/O asinkron dapat dilakukan pada file, pipa, dan perangkat komunikasi serial. Untuk informasi selengkapnya, lihat Sinkronisasi dan Input dan Output yang Tumpang Tindih.
Satu benang dapat memblokir eksekusinya sendiri sambil menunggu salah satu atau semua kejadian terjadi. Ini lebih efisien daripada menggunakan beberapa utas, masing-masing menunggu satu peristiwa, dan lebih efisien daripada menggunakan satu utas yang menggunakan waktu prosesor dengan terus memeriksa apakah peristiwa terjadi. Untuk informasi selengkapnya, silakan lihat Fungsi Tunggu.