从孙鑫c++教程学的    但是执行时一个线程有时会运行两遍  有时输出还很混乱
比如会输出
Thread1 sell  ticket:100
Thread1 sell  ticket:100
Thread2 sell  ticket:99
还有时候输出
Thread1 sell  ticket:Thread2 sell ticket 2625
操作系统是win7   是操作系统的问题?还是双核的问题?
#include<iostream.h>
#include<windows.h>
DWORD WINAPI Thread1Proc(
LPVOID lpParameter
);
DWORD WINAPI Thread2Proc(
 LPVOID lpParameter
);
int ticket=100;
HANDLE hMutex;
void main()
{
 
HANDLE hThread1;
hThread1=CreateThread(NULL,0,Thread1Proc,NULL,0,NULL);
HANDLE hThread2;
hThread2=CreateThread(NULL,0,Thread2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
//cout<<"MainThread is running!"<<endl;
hMutex=CreateMutex(NULL,FALSE,NULL);
Sleep(1000);
return;}
DWORD WINAPI Thread1Proc(
LPVOID lpParameter 
)
{
while(ticket)
{
WaitForSingleObject(hMutex,0);
cout<<"Thread1 sell ticket:"<<ticket--<<endl;
ReleaseMutex(hMutex);
}
return 0;
}
DWORD WINAPI Thread2Proc(
 LPVOID lpParameter 
 )
{
while(ticket)
{
WaitForSingleObject(hMutex,0);
cout<<"Thread2 sell ticket:"<<ticket--<<endl;
ReleaseMutex(hMutex);
}
return 0;
}