Fungsi TryEnterCriticalSection (synchapi.h)
Mencoba memasuki bagian penting tanpa memblokir. Jika panggilan berhasil, utas panggilan mengambil kepemilikan bagian penting.
Sintaks
BOOL TryEnterCriticalSection(
[in, out] LPCRITICAL_SECTION lpCriticalSection
);
Parameter
[in, out] lpCriticalSection
Penunjuk ke objek bagian penting.
Menampilkan nilai
Jika bagian kritis berhasil dimasukkan atau utas saat ini sudah memiliki bagian penting, nilai yang dikembalikan bukan nol.
Jika utas lain sudah memiliki bagian penting, nilai yang dikembalikan adalah nol.
Keterangan
Utas dari satu proses dapat menggunakan objek bagian penting untuk sinkronisasi saling pengecualian. Proses ini bertanggung jawab untuk mengalokasikan memori yang digunakan oleh objek bagian penting, yang dapat dilakukannya dengan mendeklarasikan variabel jenis CRITICAL_SECTION. Sebelum menggunakan bagian kritis, beberapa utas proses harus memanggil fungsi InitializeCriticalSection atau InitializeCriticalSectionAndSpinCount untuk menginisialisasi objek.
Untuk mengaktifkan penggunaan sumber daya bersama yang saling eksklusif, setiap utas memanggil fungsi EnterCriticalSection atau TryEnterCriticalSection untuk meminta kepemilikan bagian penting sebelum menjalankan bagian kode apa pun yang menggunakan sumber daya yang dilindungi. Perbedaannya adalah bahwa TryEnterCriticalSection segera kembali, terlepas dari apakah itu mendapatkan kepemilikan bagian kritis, sementara EnterCriticalSection memblokir sampai utas dapat mengambil kepemilikan bagian penting. Setelah selesai menjalankan kode yang dilindungi, utas menggunakan fungsi LeaveCriticalSection untuk melepaskan kepemilikan, memungkinkan utas lain untuk menjadi pemilik dan mendapatkan akses ke sumber daya yang dilindungi. Utas harus memanggil LeaveCriticalSection sekali untuk setiap kali memasuki bagian penting.
Setiap utas proses dapat menggunakan fungsi DeleteCriticalSection untuk merilis sumber daya sistem yang dialokasikan ketika objek bagian penting diinisialisasi. Setelah fungsi ini dipanggil, objek bagian penting tidak dapat lagi digunakan untuk sinkronisasi.
Jika utas berakhir saat memiliki kepemilikan bagian penting, status bagian kritis tidak terdefinisi.
Untuk mengkompilasi aplikasi yang menggunakan fungsi ini, tentukan _WIN32_WINNT sebagai 0x0400
atau yang lebih baru. Untuk informasi selengkapnya, lihat Menggunakan Header Windows.
Persyaratan
Klien minimum yang didukung | Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | synchapi.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk