zoukankan      html  css  js  c++  java
  • 多线程编程

    编写的多线程程序,是根据孙鑫的视频讲解写的,这个代码重点在于线程同步,需要注意的是线程的时间片的划分,如果主线程的时间片一直在运行的话,程序是不会进入子线程的。

    // MultiThread.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include<windows.h>
    #include<iostream>
    using namespace std;
    DWORD WINAPI Thread1(LPVOID lpParamenter);
    DWORD WINAPI Thread2(LPVOID lpParamenter);
    int ticket = 100;
    HANDLE hMutex;
    int main(int argc, _TCHAR* argv[])
    {
        HANDLE hThread1, hThread2;
        hThread1 = CreateThread(NULL, 0, Thread1, NULL, 0, NULL);
        hThread2 = CreateThread(NULL, 0, Thread2, NULL, 0, NULL);
        CloseHandle(hThread1);
        CloseHandle(hThread2);
        hMutex=CreateMutex(NULL,false,NULL);
        Sleep(1000);
        return 0;
    }
    
    DWORD WINAPI Thread1(LPVOID lpParamenter)
    {
        while (true)
        {
            WaitForSingleObject(hMutex, INFINITE);
            if (ticket > 0)
            {
                Sleep(1);
                cout << "Thread1 sell ticket:" << ticket-- << endl;
    
            }
            else
            {
                break;
            }
            ReleaseMutex(hMutex);
        }
        return 0;
    }
    
    DWORD WINAPI Thread2(LPVOID lpParamenter)
    {
        while (true)
        {
            WaitForSingleObject(hMutex, INFINITE);
            if (ticket > 0)
            {
                Sleep(1);
                cout << "Thread2 sell ticket:" << ticket-- << endl;
    
            }
            else
            {
                break;
            }
            ReleaseMutex(hMutex);
        }
        return 0;
    }
  • 相关阅读:
    hdu1410 数学题组合概率 log优化
    Triangle
    Unique Paths II
    Unique Paths
    Pascal's Triangle II
    Pascal's Triangle
    Plus One
    Remove Duplicates from Sorted Array II
    Remove Duplicates from Sorted Array
    Remove Element
  • 原文地址:https://www.cnblogs.com/qiaozhoulin/p/4562241.html
Copyright © 2011-2022 走看看