C++之多線程入門

1、最簡單的多線程任務及利用Mutex實現線程互斥,運行效果如下:
在這裏插入圖片描述
2、代碼如下:

// MultiThread.cpp : 此文件包含 "main" 函數。程序執行將在此處開始並結束。
//
#include <windows.h>
#include <stdio.h>

DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);
unsigned int nTickets = 50;
HANDLE hMutex; // 線程互斥

int main()
{
    HANDLE hThreadl;
    HANDLE hThread2;

    hMutex = CreateMutex(NULL, FALSE, NULL);

    hThreadl = CreateThread(NULL, 0, Fun1Proc, NULL, 0, NULL);
    hThread2 = CreateThread(NULL, 0, Fun2Proc, NULL, 0, NULL);
    CloseHandle(hThreadl);
    CloseHandle(hThread2);

    Sleep(500); //延遲主線程結束時間,等待子線程執行完成100次

    printf("Tickets are sold out:%d!", nTickets);

    return 0;
}

DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{
    while (TRUE)
    {
        WaitForSingleObject(hMutex, INFINITE);

        if (nTickets < 1)
        {
            break;
        }
        printf("LM sells ticket:%d! \n", nTickets--);

        ReleaseMutex(hMutex);
    }
   
    return 0;
}

DWORD WINAPI Fun2Proc(LPVOID lpParameter)
{
    while (TRUE)
    {
        WaitForSingleObject(hMutex, INFINITE);

        if (nTickets < 1)
        {
            break;
            
        }

        printf("JK sells ticket:%d! \n", nTickets--);

        ReleaseMutex(hMutex);
    }

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章