иптор одного і того ж мьютекса, що робить можливим взаємодія між процесами. Можна використовувати наступні механізми такого підходу:
· Дочірній процес, створений за допомогою функції CreateProcess може успадковувати дескриптор мьютекса у випадку, якщо при створенні мьютекса функцією CreateMutex був вказаний параметр lpMutexAttributes.
· Нитка може отримати дублікат існуючого мьютекса за допомогою функції DuplicateHandle.
· Нитка може вказати ім'я існуючого мьютекса при виклику функцій OpenMutex або CreateMutex.
Для того щоб оголосити взаємовиключення приналежним поточної нитки, треба викликати одну з чекаючих функцій. Нитка, якій належить об'єкт, може його захоплювати повторно скільки завгодно разів (це не призведе до самоблокировки), але стільки ж разів вона повинна буде його звільняти за допомогою функції ReleaseMutex.
Для синхронізації ниток одного процесу більш ефективно використання критичних секцій.
Приклад. Синхронізація ниток за допомогою м'ютексів.
# include lt; windows.h gt;
# include lt; stdio.h gt; hMutex; a [5]; hThr; long uThrID; Thread (void * pParams)
{i, num=0; (1)
{(hMutex, INFINITE); (i=0; i lt; 5; i ++) a [i]=num; ++; (hMutex);
}
} main (void)
{= CreateMutex (NULL, FALSE, NULL);=CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) Thread, NULL, 0, amp; uThrID); (1)
{(hMutex, INFINITE); (% d% d% d% d% d n raquo ;, a [0], a [1], a [2], a [3 ], a [4]); (hMutex);
} 0;
}