Junior — Middle
Bir vaqtning o'zida vazifalarni bajarishda iplarning xavfsizligini ta'minlash uchun qanday usullardan foydalandingiz?
sobes.tech AI
AIdan javob
C# da bir vaqtning o'zida vazifalarni bajarishda iplar xavfsizligini ta'minlash uchun turli xil sinxronizatsiya va kirish boshqaruv mexanizmlari qo'llaniladi:
- lock — kritik bo'limni bloklaydi, shunda faqat bitta ip uni bajarishi mumkin.
- Mutex — jarayonlararo bloklash, turli jarayonlardan kirish mumkin bo'lgan resurslar bilan ishlashda foydalidir.
- Semaphore va SemaphoreSlim — bir vaqtning o'zida resursga kirish mumkin bo'lgan iplar sonini cheklaydi.
- Monitor — yanada moslashuvchan bloklash mexanizmi bo'lib, voqealarni kutish va signal berish imkonini beradi.
- Concurrent kolleksiyalar (masalan,
ConcurrentDictionary,ConcurrentQueue) — kolleksiyalarga iplar xavfsiz kirishni ta'minlaydi. - Interlocked — o'zgaruvchilar ustida atomik operatsiyalar, raqobat shartlarini oldini oladi.
lock dan foydalanish misoli:
private readonly object _lockObj = new object();
private int _counter = 0;
public void Increment()
{
lock(_lockObj)
{
_counter++;
}
}
Bu yondashuv _counter ning turli iplar tomonidan bir vaqtning o'zida o'zgartirilishini oldini oladi, raqobat shartlarini bartaraf etadi va ma'lumotlarning yaxlitligini ta'minlaydi.