Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 3000UZS
Размер 167.4KB
Покупки 0
Дата загрузки 07 Ноябрь 2026
Расширение pptx
Раздел Презентации
Предмет Педагогика

Продавец

Bohodir Jalolov

Mutekslar yordamida umumiy ma'lumotlarni himoya qilish. Oqimlar massivi

Купить
Mutekslar yordamida umumiy 
ma'lumotlarni himoya qilish. 
Oqimlar massivi                 Mutekslar yordamida umumiy 
ma'lumotlarni himoya qilish.                 Mutex nima?

Muteks("mutual exclusion" - o'zaro istisno) asosiy 
sinxronizatsiya mexanizmidir. U xotira to'siqlaridan 
foydalangan holda bir nechta oqimlar uchun umumiy 
ma'lumotlarga o'zaro eksklyuziv kirishni tashkil qilish 
uchun mo'ljallangan (oddiylik uchun siz mutexni umumiy 
ma'lumotlarga olib boradigan eshik sifatida tasavvur 
qilishingiz mumkin).

Sintaksis

Sarlavha fayli |  #include<mutex>

E'lon qilish|  std::mutex mutex_name;                 
Muteksni qulflash  |   mutex_name.lock();

  Oqim mutex bilan himoyalangan umumiy ma'lumotlardan eksklyuziv 
foydalanishni talab qiladi. Keyin hodisalarning rivojlanishining ikkita 
stsenariysi mavjud: mutex oqim tomonidan qulflanadi(bu holda boshqa 
hech qanday oqim bu ma'lumotlarga kira olmaydi) yoki oqim bloklanadi 
(agar mutex allaqachon boshqa oqim tomonidan qulflangan bo'lsa).

Muteksni ochish  | mutex_name.unlock(); 

Resursga ehtiyoj qolmaganda, joriy egasi boshqa mavzular manbaga kirishi 
uchun qulfni ochish funksiyasini chaqirishi kerak. Muteks bo'shatilganda, 
kirish kutilayotgan oqimlardan biriga beriladi.                                  
Agar sizda mutex mavjud bo'lsa,  lock()  ga qo'ng'iroq 
qilmang.

  Muteks allaqachon qulflangan va qayta qulflashga 
urinishlar sizni cheksiz kutish holatiga olib keladi. Agar 
sizga qulflash juda ham kerak bo'lsa, 
std::recursive_mutex  sinfidan foydalanishingiz 
mumkin.  Rekursiv mutex  bir xil oqim tomonidan ko'p 
marta ishlatilishi mumkin, lekin u bir xil miqdorda 
ochilishi kerak.                 Lock guard va RAII paradigmasi

Unlock()  ga qo'ng'iroq qilishni unutib qo'ysak nima bo'ladi? 

Resurs mutexning butun umri davomida mavjud bo'lmaydi va mutexni 
qulfdan chiqarilgan holatda yo'q qilish noaniq xatti-harakatlarga olib 
keladi.

Unlock()  chaqiruvidan oldin istisno qilinsa nima bo'ladi? 

unlock()  hech qachon bajarilmaydi va bizda yuqorida sanab o'tilgan barcha 
muammolar bo'ladi.

Yaxshiyamki, muammolarni  std::lock_guard  klassi yordamida hal qilish 
mumkin. Muteksni RAII ( Resource Acquisition Is Initialization , Resurslarni 
olish - boshlash) paradigmasi yordamida chiqarish har doim kafolatlanadi. 
Bu quyidagicha yuz beradi: mutex  lock_guard  ichida inkapsullangan bo'lib, 
u o'z konstruktorida  lock()  ni va qo'llanish doirasidan chiqib ketganda 
uning destruktorida  unlock()  ni chaqiradi. Bu hatto istisnolardan ham 
xavfsizdir: stekni ochish destruktorni chaqirish orqali  lock_guard ni yo'q 
qiladi va shu bilan mutexni bo'shatadi.

std::lock_guard<std::mutex> lock_guard_name(raw_mutex);                 
#include <mutex>
std::mutex door; // mutexni elon qilish
void func()

{  
std::lock_guard<std::mutex>  lg(door);  
/* lg ning konstruktori chaqiriladi bu door.lock() ga 
ekvivalentdir.  */
/*-----------------------*/
/*   func funksiyasidan monopol foydalanish kafolatlangan * /
/*-----------------------*/}  /* lg ko’rinish sohasidan chiqadi va 
destruktor chaqiriladi bu esa door.unlock();  ga 
ekvivalentdir*/                 Unique lock

Muteksga egalik olingandan keyin ( std::lock_guard tufayli ), uni ozod qilish 
mumkin. 

std::unique_lock  xuddi shunday ishlaydi va  RAII  paradigmasining bir xil 
xavfsizlik afzalliklaridan foydalangan holda mutexni bir necha marta (har 
doim shu tartibda) qulflash va chiqarish imkonini beradi.

std::unique_lock<std::mutex> 
unique_lock_name(raw_mutex);                 
#include <mutex>
std::mutex door; //  mutexni elon qilish
void func { 
std::unique_lock<std::mutex>  ul(door); 
/* lg ning konstruktori chaqiriladi bu door.lock() ga ekvivalentdir.  */
/*-----------------------*/
/*   func funksiyasidan monopol foydalanish kafolatlangan * /
door .unlock() ; 
//  buyruqlar…..
// ....
//
door .lock() ;
// Yana func dan monopol tarzda foydalanish kafolatlanadi }  /* unique_lock 
ko’rinish sohasidan chiqadi va destruktor chaqiriladi bu esa door.unlock();  
ga ekvivalentdir  */                 E’tiboringiz uchun rahmat!

Mutekslar yordamida umumiy ma'lumotlarni himoya qilish. Oqimlar massivi

Купить
  • Похожие документы

  • 2001-yil sentabr voqealri va uning xalqaro munosabatlarga
  • 1945-1990-yillarda Buyuk Britaniya
  • 1918-1923 yillarda xalqaro munosabatlar, Versal Vashington siyetemasining tuzilishi
  • Ahmad al-farg‘oniy
  • Almashlab ekishni loyihalashtirish va joriy etish

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha