zoukankan      html  css  js  c++  java
  • C++进程间通信(常用理解例子)-买票

    #include "stdafx.h"


    #include <iostream>
    using namespace std;


    #include "windows.h"

    int index = 0;
    int tickets = 100;
    HANDLE hMutex = NULL; //互斥
    HANDLE hEvent = NULL; //事件

    CRITICAL_SECTION g_cs ; //临界区


    DWORD WINAPI Func1(LPVOID pParam)
    {

    while(true)

    {

    // WaitForSingleObject(hMutex, INFINITE);

    WaitForSingleObject(hEvent,INFINITE);

    // EnterCriticalSection(&g_cs);

    if(tickets> 0)

    {

    Sleep(1);

    cout<<"thread1 sell tickets:"<<tickets--<<endl;

    }

    else

    break;

    // ReleaseMutex(hMutex);

    SetEvent(hEvent);

    // LeaveCriticalSection(&g_cs);

    }

    return 0;

    }

    DWORD WINAPI Func2(LPVOID pParam)

    {

    while(true)

    {

    // WaitForSingleObject(hMutex,INFINITE);

    WaitForSingleObject(hEvent,INFINITE);

    // EnterCriticalSection(&g_cs);

    if(tickets> 0)

    {

    Sleep(1);

    cout<<"thread2 sell tickets:"<<tickets--<<endl;

    }

    else

    break;

    // ReleaseMutex(hMutex);

    SetEvent(hEvent);

    // LeaveCriticalSection(&g_cs);

    }

    return 0;

    }

    void main()

    {

    HANDLE hThread1 =CreateThread(NULL, 0, Func1, NULL, 0, NULL);

    HANDLE hThread2 =CreateThread(NULL, 0, Func2, NULL, 0, NULL);

    CloseHandle(hThread1);

    CloseHandle(hThread2);

    //hMutex = CreateMutex(NULL,FALSE,NULL);

    hEvent =CreateEvent(NULL, FALSE, TRUE,NULL);

    //InitializeCriticalSection(&g_cs);

    Sleep(4000);

    //DeleteCriticalSection(&g_cs);

    }

  • 相关阅读:
    join
    PS1-4
    tftp + bras
    awk调用shell
    curl
    ssh
    查看cp进度,使用watch
    tftp
    scp 链接文件的问题 + tar
    mysql必知必会(三、使用mysql)
  • 原文地址:https://www.cnblogs.com/xdbleo/p/4348311.html
Copyright © 2011-2022 走看看