#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadProc1(LPVOID lpParameter);
DWORD WINAPI ThreadProc2(LPVOID lpParameter);
int sum=100;
CRITICAL_SECTION cs;
int main (void)
{
HANDLE hThread[2]={0};
hThread[0]=CreateThread(NULL,NULL,ThreadProc1,NULL,NULL,NULL);
hThread[1]=CreateThread(NULL,NULL,ThreadProc2,NULL,NULL,NULL);
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);
InitializeCriticalSection(&cs); //初始化临界区对象
getchar();
DeleteCriticalSection(&cs); //删除临界区对象
getchar();
return 0;
}
DWORD WINAPI ThreadProc1( LPVOID lpParameter )
{
while(sum>0)
{
Sleep(1);
EnterCriticalSection(&cs); //堵塞临界区
Sleep(1);
printf("ThreadProc1 %d\n",sum--);
LeaveCriticalSection(&cs); //释放临界区
Sleep(1);
}
return true;
}
DWORD WINAPI ThreadProc2( LPVOID lpParameter )
{
while(sum>0)
{
Sleep(1);
EnterCriticalSection(&cs); //堵塞临界区
Sleep(1);
printf("ThreadProc2 %d\n",sum--);
LeaveCriticalSection(&cs); //释放临界区
Sleep(1);
}
return true;
}
/*
2015年5月5日 20:57:05
程序执行结果如下:
ThreadProc2 100
ThreadProc1 99
ThreadProc2 98
ThreadProc1 97
ThreadProc2 96
ThreadProc1 95
ThreadProc2 94
ThreadProc1 93
ThreadProc2 92
ThreadProc1 91
ThreadProc2 90
ThreadProc1 89
ThreadProc2 88
ThreadProc1 87
ThreadProc2 86
ThreadProc1 85
ThreadProc2 84
ThreadProc1 83
ThreadProc2 82
ThreadProc1 81
ThreadProc2 80
ThreadProc1 79
ThreadProc2 78
ThreadProc1 77
ThreadProc2 76
ThreadProc1 75
ThreadProc2 74
ThreadProc1 73
ThreadProc2 72
ThreadProc1 71
ThreadProc2 70
ThreadProc1 69
ThreadProc2 68
ThreadProc1 67
ThreadProc2 66
ThreadProc1 65
ThreadProc2 64
ThreadProc1 63
ThreadProc2 62
ThreadProc1 61
ThreadProc2 60
ThreadProc1 59
ThreadProc2 58
ThreadProc1 57
ThreadProc2 56
ThreadProc1 55
ThreadProc2 54
ThreadProc1 53
ThreadProc2 52
ThreadProc1 51
ThreadProc2 50
ThreadProc1 49
ThreadProc2 48
ThreadProc1 47
ThreadProc2 46
ThreadProc1 45
ThreadProc2 44
ThreadProc1 43
ThreadProc2 42
ThreadProc1 41
ThreadProc2 40
ThreadProc1 39
ThreadProc2 38
ThreadProc1 37
ThreadProc2 36
ThreadProc1 35
ThreadProc2 34
ThreadProc1 33
ThreadProc2 32
ThreadProc1 31
ThreadProc2 30
ThreadProc1 29
ThreadProc2 28
ThreadProc1 27
ThreadProc2 26
ThreadProc1 25
ThreadProc2 24
ThreadProc1 23
ThreadProc2 22
ThreadProc1 21
ThreadProc2 20
ThreadProc1 19
ThreadProc2 18
ThreadProc1 17
ThreadProc2 16
ThreadProc1 15
ThreadProc2 14
ThreadProc1 13
ThreadProc2 12
ThreadProc1 11
ThreadProc2 10
ThreadProc1 9
ThreadProc2 8
ThreadProc1 7
ThreadProc2 6
ThreadProc1 5
ThreadProc2 4
ThreadProc1 3
ThreadProc2 2
ThreadProc1 1
*/
InitializeCriticalSection
最新推荐文章于 2024-03-07 17:34:19 发布