您的位置:首页 > 编程语言 > Qt开发

windows线程创建与线程处理函数

2017-10-31 20:34 330 查看
近期工作中用到了Windows中的线程创建函数,实例代码如下:

#include <QCoreApplication>

#include <windows.h>

#include <iostream>

#include <windef.h>


using namespace std;

//声明了两个线程处理函数

DWORD WINAPI Fun1Proc(LPVOID lpParameter);

DWORD WINAPI Fun2Proc(LPVOID lpParameter);

//公有变量作为共享资源

int tickets=100;

//互斥锁句柄

HANDLE hMutex;


int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

HANDLE hThread1;

HANDLE hThread2;

//创建互斥锁

hMutex=CreateMutex(NULL,FALSE,NULL);

//使用CreateThread函数创建线程hThread1和hThread2

hThread1=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Fun1Proc,NULL,0,NULL);

hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);


while(true)

{

//主线程在互斥锁中出售火车票

WaitForSingleObject(hMutex,INFINITE);

if(tickets>0)

cout<<"main thread sell ticket:"<<tickets--<<endl;

else

break;

ReleaseMutex(hMutex);

}

return 0;

//销售完火车票后关闭两个子线程

CloseHandle(hThread1);

CloseHandle(hThread2);


Sleep(4000);

return a.exec();

}


//线程hThread1的线程处理函数

DWORD WINAPI Fun1Proc(LPVOID lpParameter)

{

while(true)

{

WaitForSingleObject(hMutex,INFINITE);

if(tickets>0)

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

else

break;

ReleaseMutex(hMutex);

}

return 0;

}

//线程hThread2的线程处理函数

DWORD WINAPI Fun2Proc(LPVOID lpParameter)

{

while(true)

{

WaitForSingleObject(hMutex,INFINITE);

if(tickets>0)

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

else

break;

ReleaseMutex(hMutex);

}

return 0;

}


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