线程创建, 使用, 释放代码

152 篇文章 1 订阅

线程创建, 使用, 释放代码, 我自己常用方式, 特此记录.


// 头文件声明

volatile bool m_bXXXThreadExit;
HANDLE m_hXXXThread;
HANDLE m_hXXXEvent;
void CreateXXXThread();
static DWORD WINAPI XXXThread(LPVOID lpParameter);
DWORD XXX();
void ReleaseXXXThread();

// cpp文件

// 初始化
m_bXXXThreadExit = true;
m_hXXXThread = 0;
m_hXXXEvent = 0;

// 自动测量相关代码
void CSomeClass::CreateXXXThread()
{
	m_bXXXThreadExit = false;
	m_hXXXEvent = ::CreateEvent(0, false, false, 0);
	DWORD dwThreadID;
	m_hXXXThread = ::CreateThread(NULL, 0, CSomeClass::XXXThread, this, 0, &dwThreadID);
}

void CSomeClass::ReleaseXXXThread()
{
	m_bXXXThreadExit = true;
	::SetEvent(m_hXXXEvent);
	::WaitForSingleObject(m_hXXXThread, INFINITE);
	::CloseHandle(m_hXXXEvent);
	::CloseHandle(m_hXXXThread);
	m_hXXXEvent = 0;
	m_hXXXThread = 0;
}

DWORD WINAPI CSomeClass::MeasureThread(LPVOID lpParameter)
{
	return ((CSomeClass*)lpParameter)->XXX();
}

DWORD CSomeClass::XXX()
{
	/*
	// Do Something
	...
	while(m_bXXXThreadExit == false)
	{
		Sleep(5);
		::WaitForSingleObject(m_hXXXThread, INFINITE);
		...
	}
	return 0;
}

// 使用(创建和释放)

CreateXXXThread();
ReleaseXXXThread();


当然, 封装一个线程池类会更好用. 后面尝试多使用线程池.





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值