求错误在哪里?0xc0000005:写入位置0x00000014时发生访问冲突
0xc0000005:写入位置0x00000014时发生访问冲突
// 创建多线程.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
DWORD WINAPI myfun1(LPVOID lpParameter);
DWORD WINAPI myfun2(LPVOID lpParameter);
static int a1=0;
CRITICAL_SECTION Section;
int main()
{
HANDLE h1,h2;
h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);
printf("线程1开始运行!\r\n");
h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);
printf("线程2开始运行!\r\n");
::CloseHandle(h1);
::CloseHandle(h2);
InitializeCriticalSection(§ion);
::Sleep(1000);
printf("正常退出程序请按'q'\r\n");
if (getchar()=='q')
{
DeleteCriticalSection(§ion);
}
else
{
return 0;
}
}
DWORD WINAPI myfun1(LPVOID lpParameter)
{
while (1)
{
EnterCriticalSection(§ion);
a1++;
if (a1<10)
{
::Sleep(1000);
printf("线程1正在计数%d\r\n",a1);
LeaveCriticalSection(§ion);
}
else
{
LeaveCriticalSection(§ion);
break;
}
}
return 0;
}
DWORD WINAPI myfun2(LPVOID lpParameter)
{
while (1)
{
EnterCriticalSection(§ion);
a1++;
if (a1<10)
{
::Sleep(1000);
printf("线程2正在计数%d\r\n",a1);
LeaveCriticalSection(§ion);
}
else
{
LeaveCriticalSection(§ion);
break;
}
}
return 0;
}
总感觉没错,求指教