#include <windows.h>
#include <iostream.h>
CRITICAL_SECTION cs;
DWORD WINAPI Thread_1(LPVOID p)
{
// входим в критическую секцию и получаем эксклюзивный доступ к охраняемому ресурсу
EnterCriticalSection(&cs);
// пишем данные в поток вывода
cout << "thread #1 id: " << GetCurrentThreadId() << endl;
// покидаем критическую секцию
LeaveCriticalSection(&cs);
return 0;
}
DWORD WINAPI Thread_2(LPVOID p)
{
// входим в критическую секцию и получаем эксклюзивный доступ к охраняемому ресурсу
EnterCriticalSection(&cs);
// пишем данные в поток вывода
cout << "thread #2 id: " << GetCurrentThreadId() << endl;
// покидаем критическую секцию
LeaveCriticalSection(&cs);
return 0;
}
int main()
{
HANDLE hThread_1, hThread_2;
// создаем критическую секцию
InitializeCriticalSection(&cs);
// запускаем поток 1
hThread_1 = CreateThread(NULL, 0, Thread_1, NULL, 0, NULL);
if (hThread_1 == NULL)
return GetLastError();
// запускаем поток 2
hThread_2 = CreateThread(NULL, 0, Thread_2, NULL, 0, NULL);
if (hThread_2 == NULL)
return GetLastError();
// ждем, пока поток Thread_1 закончит работу
WaitForSingleObject(hThread_1, INFINITE);
// ждем, пока поток Thread_2 закончит работу
WaitForSingleObject(hThread_2, INFINITE);
// закрываем дескриптор потока Thread_1
CloseHandle(hThread_1);
// закрываем дескриптор потока Thread_2
CloseHandle(hThread_2);
// удаляем критическую секцию
DeleteCriticalSection(&cs);
return 0;
}
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.