阅读背景:

线程同步之互斥对象(通俗易懂)

来源:互联网 

     先看售票系统的程序,看看多线程容易出什么问题:

#include <windows.h>
#include <iostream.h>

DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);

int tickets = 100;

int main()
{
    HANDLE hThread1;
    HANDLE hThread2;

    hThread1 = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);
    hThread2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL);

    CloseHandle(hThread1);
    CloseHandle(hThread2);
    Sleep(4000);

	return 0;
}

DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
    while(1)
    {    
        if(tickets > 0)
        {
            cout << "thread2 sell ticket : "<< tickets-- << endl;
        }
        else
		{
            break;   
		}
    }

	return 0;
}

DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
    while(1)
    {     
        if(tickets > 0)
        {
            cout << "thread1 sell ticket : " << tickets-- << endl;
        }
        else
		{
            break;
		} 
    }

	return 0;
}#include <window



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: