多线程简单复习

简介: //线程回调函数 DWORD __stdcall ThreadPoc(PVOID pParam) { Sleep(10000); AfxMessageBox(_T("线程终止了")); return 10; } void CMutiThreadStudyDlg::OnBnClic...
//线程回调函数
DWORD __stdcall ThreadPoc(PVOID pParam)
{
	Sleep(10000);
	AfxMessageBox(_T("线程终止了"));
	return 10;
}
void CMutiThreadStudyDlg::OnBnClickedStart()
{
	// 创建线程进执行
	m_hThread=CreateThread (NULL,0,ThreadPoc,NULL,0,NULL);
	//创建线程后会返回一个线程句柄,线程的使用记数为2,
	//在你得到线程句柄后如果不对线程进行其他操作的话就通过CloseHandle()关闭该句柄,
	//同时线程记数-1。线程执行退出时,记数也会减1,记数为0时,操作系统会释放线程的句柄资源,因此,大多数情况下,创建完线程后都会关闭线程句柄。跟多详细信息可以参考《windows核心编程》
//	CloseHandle((HANDLE)m_hThread);
}



void CMutiThreadStudyDlg::OnBnClickedButton2()
{
	// TODO: 线程是否还在执行

	DWORD dwReturn=WaitForSingleObject((HANDLE)m_hThread,500);
	switch(dwReturn)
	{
	case WAIT_TIMEOUT:
		AfxMessageBox(_T("线程还没有结束"));
		break;
	case WAIT_OBJECT_0:
		AfxMessageBox(_T("线程已经结束"));
		break;
	case WAIT_FAILED :
		AfxMessageBox(_T("失败"));
		break;
	default:
		AfxMessageBox(_T("others"));
		break;
	}
}

void CMutiThreadStudyDlg::OnBnClickedButton3()
{
	//得到线程回调函数返回值
	DWORD dwExitCode=0;;
	int ret=::GetExitCodeThread((HANDLE)m_hThread,&dwExitCode);
	if(ret!=0)
	{
		CString csOutMsg;
		switch(dwExitCode)
		{
		case STILL_ACTIVE:
			AfxMessageBox(_T("线程还没有返回"));
			break;
		default:
			csOutMsg.Format(_T("线程返回成功 %d"),dwExitCode);
			AfxMessageBox(csOutMsg);
			break;
		}
	}
	else
	{
		AfxMessageBox(_T("GetExitCodeThread 执行出错"));
	}
}
相关文章
|
27天前
|
人工智能 自然语言处理 语音技术
Soul App联合西工大和上交大开源语音合成模型SoulX-Podcast,已登顶Hugging Face TTS趋势榜!
Soul AI Lab联合西工大、上交大开源SoulX-Podcast,支持中英粤川等多语种方言及副语言生成,可稳定输出超60分钟自然流畅的多人对话音频,已在Huggingface登顶TTS趋势榜。
336 0
Soul App联合西工大和上交大开源语音合成模型SoulX-Podcast,已登顶Hugging Face TTS趋势榜!
|
1月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
534 2
|
1月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
272 0
|
23天前
|
数据采集 监控 数据可视化
Python因果分析选哪个?六个贝叶斯推断库实测对比(含代码示例)
本文对比了Python中六大常用因果推断库:Bnlearn、Pgmpy、CausalNex、DoWhy、PyAgrum和CausalImpact,涵盖贝叶斯网络建模、因果结构学习与效应评估。基于Census Income数据集,分析各库在因果发现、可解释性与工程实践中的优劣,助你根据项目需求选择合适工具。
254 6
Python因果分析选哪个?六个贝叶斯推断库实测对比(含代码示例)
|
1月前
|
人工智能 弹性计算 智能设计
阿里云PAI人工智能平台计费说明:按量计费/节省计划/包年包月/资源包/按推理时长计费说明
阿里云PAI平台提供按量计费、包年包月、资源包、节省计划及按推理时长计费五种模式,适用于不同场景。按量适合短期测试,包年包月适合长期稳定使用,资源包和节省计划可降成本,按推理时长适配弹性负载。结合实际需求选择更划算。
583 10
|
4月前
|
人工智能 开发者
AI-Compass宝藏资源库:构建最全面的AI学习
AI-Compass宝藏资源库:构建最全面的AI学习
|
5月前
|
Java 数据库 数据安全/隐私保护
银行流水生成器在线制作,银行转账p图在线生成,java实现最牛的生成器【仅供学习用途】
本资料探讨银行系统核心技术,涵盖交易记录生成、电子回单加密验真及基于Java的财务管理系统开发。主要内容包括:交易记录实体类设计(不可变性与数字签名)
|
3月前
|
C++
什么是单项式
单项式是代数式中的一种
抖音私信群发插件,自动批量发送私信内容,抖音私信无限制群发源码
这是一款抖音非互关用户私信工具,通过自动化操作实现对抖音用户的私信营销。包含初始化设置、自动点击私信、随机话术发送等功能。