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

Objek Bagian Kritis

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSection

InitializeCriticalSectionAndSpinCount

LeaveCriticalSection

Fungsi Sinkronisasi

API Vertdll tersedia di enklave VBS