Objek Sinkronisasi

Objek sinkronisasi adalah objek yang handelnya dapat ditentukan dalam salah satu fungsi tunggu untuk mengoordinasikan eksekusi beberapa utas. Lebih dari satu proses dapat memiliki handel ke objek sinkronisasi yang sama, membuat sinkronisasi antarproses dimungkinkan.

Jenis objek berikut disediakan secara eksklusif untuk sinkronisasi.

Jenis Deskripsi
Kejadian Memberi tahu satu atau beberapa utas tunggu bahwa suatu peristiwa telah terjadi. Untuk informasi selengkapnya, lihat Objek Peristiwa.
Mutex Hanya dapat dimiliki oleh satu utas pada satu waktu, memungkinkan utas untuk mengoordinasikan akses yang saling eksklusif ke sumber daya bersama. Untuk informasi selengkapnya, lihat Objek Mutex.
Semaphore Mempertahankan hitungan antara nol dan beberapa nilai maksimum, membatasi jumlah utas yang secara bersamaan mengakses sumber daya bersama. Untuk informasi selengkapnya, lihat Objek Semaphore.
Timer yang dapat ditunda Memberi tahu satu atau beberapa utas tunggu bahwa waktu yang ditentukan telah tiba. Untuk informasi selengkapnya, lihat Objek Timer yang Dapat Diantisipasi.

 

Meskipun tersedia untuk penggunaan lain, objek berikut juga dapat digunakan untuk sinkronisasi.

Objek Deskripsi
Mengubah pemberitahuan Dibuat oleh fungsi FindFirstChangeNotification , statusnya diatur ke sinyal ketika jenis perubahan tertentu terjadi dalam direktori atau pohon direktori tertentu. Untuk informasi selengkapnya, lihat Mendapatkan Pemberitahuan Perubahan Direktori.
Input konsol Dibuat saat konsol dibuat. Handel ke input konsol dikembalikan oleh fungsi CreateFile saat CONIN$ ditentukan, atau oleh fungsi GetStdHandle . Statusnya diatur ke sinyal ketika ada input yang belum dibaca di buffer input konsol, dan diatur ke nonsignaled ketika buffer input kosong. Untuk informasi selengkapnya tentang konsol, lihat Aplikasi Mode Karakter
Tugas Dibuat dengan memanggil fungsi CreateJobObject . Status objek pekerjaan diatur ke sinyal ketika semua prosesnya dihentikan karena batas waktu akhir pekerjaan yang ditentukan telah terlampaui. Untuk informasi selengkapnya tentang objek pekerjaan, lihat Objek Pekerjaan.
Pemberitahuan sumber daya memori Dibuat oleh fungsi CreateMemoryResourceNotification . Statusnya diatur ke sinyal ketika jenis perubahan yang ditentukan terjadi dalam memori fisik. Untuk informasi selengkapnya tentang memori, lihat Manajemen Memori.
Proses Dibuat dengan memanggil fungsi CreateProcess . Statusnya diatur ke nonsignaled saat proses berjalan, dan diatur ke sinyal ketika proses berakhir. Untuk informasi selengkapnya tentang proses, lihat Proses dan Utas.
Rangkaian Dibuat saat utas baru dibuat dengan memanggil fungsi CreateProcess, CreateThread, atau CreateRemoteThread . Statusnya diatur ke nonsignaled saat utas berjalan, dan diatur ke sinyal ketika utas berakhir. Untuk informasi selengkapnya tentang utas, lihat Proses dan Utas.

 

Dalam beberapa keadaan, Anda juga dapat menggunakan file, pipa bernama, atau perangkat komunikasi sebagai objek sinkronisasi; namun, penggunaannya untuk tujuan ini tidak disarankan. Sebagai gantinya, gunakan I/O asinkron dan tunggu objek peristiwa yang diatur dalam struktur TUMPANG TINDIH . Lebih aman untuk menggunakan objek peristiwa karena kebingungan yang dapat terjadi ketika beberapa operasi tumpang tindih bersamaan dilakukan pada file yang sama, pipa bernama, atau perangkat komunikasi. Dalam situasi ini, tidak ada cara untuk mengetahui operasi mana yang menyebabkan status objek diberi sinyal.

Untuk informasi tambahan tentang operasi I/O pada file, pipa bernama, atau komunikasi, lihat Sinkronisasi dan Input dan Output yang Tumpang Tindih.