Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Механізми синхронізації і взаємодії процесів і потоків

Реферат Механізми синхронізації і взаємодії процесів і потоків





ка дійсно створює м'ютекс, а наступні - отримують дескриптор вже існуючого об'єкта. Це дає можливість декільком ниткам отримати дескриптор одного і того ж мьютекса, звільняючи програміста від необхідності піклуватися про те, хто насправді створює м'ютекс. Якщо використовується такий підхід, бажано встановити прапор bInitialOwner в FALSE, інакше виникнуть певні труднощі при визначенні дійсного творця мьютекса. Кілька ниток можуть отримати дескриптор одного і того ж мьютекса, що робить можливим взаємодія між процесами. Можна використовувати такі механізми такого підходу:

· Дочірній процес, створений за допомогою функції CreateProcess може успадковувати дескриптор мьютекса у разі, якщо при створенні мьютекса функцією CreateMutex був вказаний параметр lpMutexAttributes.

· Нитка може отримати дублікат існуючого мьютекса за допомогою функції DuplicateHandle.

· Нитка може вказати ім'я існуючого мьютекса при виклику функцій OpenMutex або CreateMutex.

Для того щоб оголосити взаємовиключає належить поточної нитки, треба викликати одну з чекаючих функцій. Нитка, якій належить об'єкт, може його «захоплювати» повторно скільки завгодно разів (це не призведе до самоблокировки), але стільки ж разів вона повинна буде його звільняти за допомогою функції ReleaseMutex.

Для синхронізації ниток одного процесу більш ефективно використання критичних секцій.

Приклад. Синхронізація ниток за допомогою м'ютексів.


# include

# include hMutex; a [5]; hThr; long uThrID; Thread (void * pParams)

{i, num=0; (1)

{(hMutex, INFINITE); (i=0; i <5; i + +) a [i]=num; + +; (hMutex);

}

} main (void)

{= CreateMutex (NULL, FALSE, NULL);=CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) Thread, NULL, 0, & uThrID); (1)

{(hMutex, INFINITE); («% d% d% d% d% d n», a [0], a [1], a [2], a [3 ], a [4]); (hMutex);

} 0;

}


Назад | сторінка 8 з 8





Схожі реферати:

  • Реферат на тему: Розподіл завдань за допомогою ниток по процесорах обчислювальної системи за ...
  • Реферат на тему: Механізми синхронізації і взаємодії процесів і потоків
  • Реферат на тему: Аналіз основних показників фінансово-економічної діяльності промислових під ...
  • Реферат на тему: Чи може музика зупинити танки
  • Реферат на тему: Чи може комп'ютер мислити