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;
}
相关文章推荐
- (MFC入门)创建一个windows消息处理函数
- windows笔记-创建线程的另一个函数_beginthreadex
- 封装windows 线程创建函数_beginthreadex和createthread函数的类
- windows系统中创建线程常用哪几个函数,有什么区别?
- windows笔记-创建线程的另一个函数_beginthreadex
- windows环境编程: 线程创建函数 设置线程名 隐藏DOS窗口 重定向IO
- windows笔记-创建线程的函数CreateThread
- windows笔记-创建线程的另一个函数_beginthreadex
- windows线程消息通信和处理 PostThreadMessage和PeekMessage GetMessage
- linux C++ 类成员函数中创建线程,且能访问类中其他成员变量
- Delphi 中的消息钩子函数和Windows子类处理
- 多线程处理:创建用户界面线程
- windows线程创建
- windows平台消息处理函数(C版)
- WINDOWS窗口创建及消息处理代码
- [导入]Windows函数错误处理
- gdb动态库延迟断点及线程/进程创建相关事件处理(下)
- 【WCE】Windows Shell 路径处理函数
- Windows函数错误处理
- 【python】函数+windows下文件路径的\ / 问题(一个创建文件并过滤关键字的例子)