Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 14970|Jawab: 3

[Sumber] [Pertempuran aktual]. NET/C# menggunakan SemaphoreSlim untuk membatasi metode eksekusi bersamaan

[Salin tautan]
Diposting pada 19/02/2022 21.23.20 | | | |
Persyaratan: Karena sumber daya perangkat keras yang terbatas, program perlu mengkonsumsi sejumlah sumber daya perangkat keras, dalam kasus konkurensi yang tinggi, jika beberapa metode yang menghabiskan terlalu banyak sumber daya program tidak dibatasi (mengekspor sejumlah besar data ke tabel Excel), hal itu dapat memengaruhi ketidakmampuan seluruh program untuk menyediakan layanan normal, dan juga mempengaruhi pengoperasian normal sistem operasi.

Perbedaan Semaphore dan SemaphoreSlim

SemaphoreSlim dan Semaphore memiliki fungsionalitas yang serupa. SemaphoreSlim sekitar 4 kali lebih cepat dari Semaphore, tetapi SemaphoreSlim tidak dapat digunakan untuk pensinyalan antar-proses.

Alasan peningkatan kinerja adalah karena kelas SemaphoreSlim memberikan alternatif ringan untuk kelas Semaphore, yang tidak menggunakan semaphore kernel Windows. Pada dasarnya, jika Anda tidak perlu memberi nama semaphore, gunakan kelas SemaphoreSlim.

SemaphoreSlim didasarkan pada SpinWait dan Monitor, jadi utas yang menunggu untuk mendapatkan kunci menghabiskan periode siklus CPU, berharap untuk mendapatkan kunci sebelum memberi jalan ke utas lain. Jika ini tidak terjadi, maka utas memungkinkan sistem mengganti konteks dan mencoba lagi saat OS menjadwalkan utas itu lagi (dengan menggunakan beberapa siklus CPU). Jika menunggu lama, mode ini dapat menghabiskan banyak siklus CPU. Jadi kasus terbaik untuk implementasi ini adalah bahwa sebagian besar waktu tidak ada waktu tunggu dan Anda bisa segera mendapatkan kuncinya.
Semaphore mengandalkan implementasi di kernel OS, jadi setiap kali kunci diperoleh, dibutuhkan sedikit siklus CPU, tetapi setelah itu utas hanya berhibernasi untuk mendapatkan waktu yang diperlukan untuk mendapatkan kunci.

Dokumentasi Semaphore:https://docs.microsoft.com/en-us ... aphore?view=net-6.0
Dokumentasi SemaphoreSlim:https://docs.microsoft.com/en-us ... reslim?view=net-6.0

Sebelum menjalankan metode, metode tunggu yang umum digunakan adalah sebagai berikutPanggilan sesuai dengan situasi aktual bisnis Anda sendiri

Wait(): Memblokir utas hingga dapat masuk ke SemaphoreSlim.
Wait(0): Metode tidak akan diblokir. Ini akan menguji status pegangan tunggu dan segera kembali.
Tunggu: Memblokir utas saat ini hingga dapat masuk ke SemaphoreSlim, sambil menentukan batas waktu menggunakan bilangan bulat bertanda 32-bit.

Kode sumbernya adalah sebagai berikut:

Renderingnya adalah sebagai berikut:







Mantan:Linux Secretless Login (ssh) atau Secretless Copy (scp) ke server lain
Depan:Linux menggunakan lookbusy untuk mensimulasikan penggunaan CPU
Diposting pada 19/02/2022 23.16.57 |
Belajar untuk belajar...
Diposting pada 20/02/2022 22.19.24 |
ujian
 Tuan tanah| Diposting pada 18/12/2024 20.40.10 |
Perbedaan antara ManualResetEvent dan AutoResetEvent yang dipelajari oleh utas C#
https://www.itsvse.com/thread-4810-1-1.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com