您的位置:首页 > 编程语言 > C语言/C++

C++ 多线程编程实例

2012-08-24 15:33 591 查看
 核心提示:从网上搜集来的非常基础的C++多线程实例,刚入门的可以看看,希望能有所帮助。Cpp代码 //这是2个线程模拟卖火车票的小程序 #includewindows.h #includeiostream.h DWORDWINAPIFun1Proc(LPVOIDlpParameter);//threaddat...

     从网上搜集来的非常基础的C++多线程实例,刚入门的可以看看,希望能有所帮助。
Cpp代码 



//这是2个线程模拟卖火车票的小程序   

#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;
  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 c++ 编程 null fun c