• C++ 多线程(两个线程卖火车票)


    #include <windows.h>
    #include <iostream.h>
    
    DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data
    DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data
    
    int index=0;
    int tickets=10;
    HANDLE hMutex;
    void 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);
    
        //创建互斥对象
        hMutex=CreateMutex(NULL,TRUE,"tickets");
        if (hMutex)
        {
            if (ERROR_ALREADY_EXISTS==GetLastError())
            {
                cout<<"only one instance can run!"<<endl;
                return;
            }
        }
        WaitForSingleObject(hMutex,INFINITE);
        ReleaseMutex(hMutex);
        ReleaseMutex(hMutex);
        
        Sleep(4000);
    }
    //线程1的入口函数
    DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data
    {
        while (true)
        {
            ReleaseMutex(hMutex);
            WaitForSingleObject(hMutex,INFINITE);
            if (tickets>0)
            {
                Sleep(1);
                cout<<"thread1 sell ticket :"<<tickets--<<endl;
            }
            else
                break;
            ReleaseMutex(hMutex);
        }
    
        return 0;
    }
    //线程2的入口函数
    DWORD WINAPI Fun2Proc(LPVOID lpParameter)//thread data
    {
        while (true)
        {
            ReleaseMutex(hMutex);
            WaitForSingleObject(hMutex,INFINITE);
            if (tickets>0)
            {
                Sleep(1);
                cout<<"thread2 sell ticket :"<<tickets--<<endl;
            }
            else
                break;
            ReleaseMutex(hMutex);
        }
        
        return 0;
    }
    
  • 相关阅读:
    将最大主机/ DNS名称字符长度从63增加到255
    e3 cpu
    项目结构图
    Nyquist–Shannon sampling theorem 采样定理
    提高比特率 有损 无损 Video-and-Audio-file-format-conversion 视频声音转码
    比特率计算
    外微分
    功与路径无关的条件
    14.10.4 Defragmenting a Table 整理表
    14.10.4 Defragmenting a Table 整理表
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/6955773.html
Copyright © 2020-2023  润新知