65,208
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <Windows.h>
#include <tchar.h>
int x;
CRITICAL_SECTION cs;
DWORD WINAPI threadSync1(LPVOID lpParam)
{
while (1)
{
EnterCriticalSection(&cs);//执行到这儿就会报错
x++;
printf("x+1=%d",x);
Sleep(1);
LeaveCriticalSection(&cs);
}
}
DWORD WINAPI threadSync2(LPVOID lpParam)
{
while (1)
{
EnterCriticalSection(&cs);
x=x-1;
Sleep(1);
printf("x-1=%d",x);
EnterCriticalSection(&cs);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&cs);
x=10;
printf("x=%d",x);
HANDLE thread1=CreateThread(NULL,0,threadSync1,NULL,0,NULL);
HANDLE thread2=CreateThread(NULL,0,threadSync2,NULL,0,NULL);
CloseHandle(thread1);
CloseHandle(thread2);
DeleteCriticalSection(&cs);
return 0;
}
DWORD WINAPI threadSync1(LPVOID lpParam)
{
while (1)
{
EnterCriticalSection(&cs);
x += 6;
x -= 6;
printf("x+1=%d",x);
Sleep(1);
LeaveCriticalSection(&cs);
}
}
DWORD WINAPI threadSync2(LPVOID lpParam)
{
while (1)
{
EnterCriticalSection(&cs);
x -= 8;
x += 8;
Sleep(1);
printf("x-1=%d",x);
EnterCriticalSection(&cs);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&cs);
x=10;
printf("x=%d",x);
HANDLE thread1=CreateThread(NULL,0,threadSync1,NULL,0,NULL);
HANDLE thread2=CreateThread(NULL,0,threadSync2,NULL,0,NULL);
CloseHandle(thread1);
CloseHandle(thread2);
while(1)
;
DeleteCriticalSection(&cs);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&cs);
x=10;
printf("x=%d",x);
HANDLE thread1=CreateThread(NULL,0,threadSync1,NULL,0,NULL);
HANDLE thread2=CreateThread(NULL,0,threadSync2,NULL,0,NULL);
CloseHandle(thread1);
CloseHandle(thread2);
DeleteCriticalSection(&cs);
while(1)
;
return 0;
}