Добавил:
Факультет ИКСС, группа ИКВТ-61 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LAB / WORK_8 / child / main

.cpp
Скачиваний:
34
Добавлен:
20.02.2019
Размер:
1.11 Кб
Скачать
// Синхронизация потоков, выполняющихся в
// разных процессах, с использованинм мьютекса
#include <windows.h>
#include <iostream>
#include <unistd.h>

using namespace std;

int main()
{
    HANDLE hMutex;
    int i,j;
    // открываем мьютекс
    hMutex = OpenMutex(SYNCHRONIZE, FALSE, TEXT("DemoMutex"));

    if (hMutex == nullptr)
    {
        printf("OpenMutex error: %d\n", static_cast<int>(GetLastError()) );
        printf("\nPress any key to exit.");
        cin.get();
        return 0;
    }

    for (j = 10; j < 20; j++)
    {
        // захватываем мьютекс
        WaitForSingleObject(hMutex, INFINITE);

        for (i = 0; i < 10; i++)
        {
            cout << j << ' ';
            cout.flush();
            Sleep(5);
        }
        cout << endl;
        // освобождаем мьютекс
        ReleaseMutex(hMutex);
    }

    // закрываем дескриптор объекта
    CloseHandle(hMutex);
    return 0;
}