Көпағындық программалауды қолдау. Үрдістерді басқару. Жадының ұйымдастырылуы



бет4/6
Дата09.05.2023
өлшемі83,07 Kb.
#91350
түріПрограмма
1   2   3   4   5   6
Байланысты:
Лекция 4 (4)

Мьютекс

  • Мьютекс System.Threading.Mutex класында сүйемелденеді. Оның бірнеше конструкторы бар. Төменде ең көп қолданылатын екі конструктор келтірілген.
  • public Mutex()
  • public Mutex(bool initiallyOwned)
  • Конструктордың бірінші нұсқасында бастапқы кезде ешбір ағын пайдаланбайтын мьютекс құрылады. Ал екінші нұсқасында, егер initiallyOwned параметрі true логикалық мәніне ие болса, мьютекстің бастапқы жағдайын шақырушы ағын пайдаланады.

Мьютекс (мысал 3)

  • Мьютексті алу үшін программа кодында осы мьютекс үшін WaitOne() әдісін шақыру керек. Бұл әдісті Mutex класы Thread.WaitHandle класынан мұралайды. Бұл әдістің ең қарапайым формасы:
  • public bool WaitOne();
  • WaitOne() әдісі мьютексті алғанша күтуді ұйымдастырады. Осы арқылы, бұл әдіс көрсетілген мьютекс қолжетімді болғанша шақырушы ағынның орындалуын бұғаттайды. Ол әрқашан true мәнін қайтарады.
  • Мьютексті босату ReleaseMutex() әдісін шақыру арқылы орындалады.
  • public void ReleaseMutex()
  • Мьютексті иеленген ағында WaitOne() әдісін бірнеше рет қайталап шақыруға болады, ол ағын жұмысына еш әсер етпейді. Бірақ WaitOne() әдісін неше рет шақырсаңыз, мьютексті босату үшін ReleaseMutex() әдісін де сонша рет шақыру керек.

Атаулы мьютекс

  • Осыған дейін қолданылған мьютекс оны тудырған процеске ғана белгілі болды. Алайда, мьютексті процестен тыс та белгілі болатындай етіп құруға болады, ол үшін оған атау беру керек.
  • public Mutex(bool initiallyOwned, string аты)
  • public Mutex(bool initiallyOwned, string аты,out bool createdNew)
  • Мьютекстің бұл формасында initiallyOwned параметрлі false мәнін қабылдағаны дұрыс. Конструктордың екінші нұсқасында мьютексті иелену сұратылып, мьютекс алынған болса, конструктордан қайтқанда createdNew параметрі true мәнін қабылдайды, ал егер иеленуге сұраныс қанағаттандырылмаса, false мәнін қабылдайды.
  • Атаулы мьютекстер көмегімен процестердің өзара әрекеттесуін синхронизациялауға болады.


Достарыңызбен бөлісу:
1   2   3   4   5   6




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет