4个线程池_vc2010线程win32线程已退出

4个线程池_vc2010线程win32线程已退出在windows中,系统提供了QueueUserWorkItem函数实现异步调用,这个函数相当于在线程池中建立多个用户工作项目,跟普通线程机制一样,线程池也有线程的同步等机制。 【函数原型】BOOLWINAPIQueueUserWorkItem(__inLPTHREAD_START_ROUTINEFunction,__inP…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在windows中,系统提供了QueueUserWorkItem 函数实现异步调用,这个函数相当于在线程池中建立多个用户工作项目,跟普通线程机制一样,线程池也有线程的同步等机制。

 

【函数原型】

BOOL WINAPI QueueUserWorkItem(
  __in          LPTHREAD_START_ROUTINE Function,
  __in          PVOID Context,
  __in          ULONG Flags
);

【参数解析】

Function 就是用户定义的函数;

context 是PVOID指针,也是Function的参数;

Flags 表示一组标志值,作用可通过查MSDN看到

WT_EXECUTEDEFAULT  :工作项目放入非I/O组件得线程中。

WT_EXECUTEINIOTHREAD :工作项目放入I/O组件的线程中,这样的线程在I/O请求没有完成之前不会被终止运行,防止因为线程被终止导致I/O请求丢失。

WT_EXECUTEINPERSISTENTTHREAD :放入永久线程池。

WT_EXECUTELONGFUNCTION  :工作项目需要长时间的工作,系统会据此安排更多的线程。

 

【示例代码】

#include <assert.h>
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;


DWORD WINAPI Thread1(PVOID pContext);
DWORD WINAPI Thread2(PVOID pContext);
DWORD WINAPI Thread3(PVOID pContext);

CRITICAL_SECTION g_cs;

int main(int argc, char * argv[])
{
	HANDLE hCompleteEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
	
	InitializeCriticalSection(&g_cs);

	QueueUserWorkItem(Thread1, L"I'm thread 1", WT_EXECUTEINLONGTHREAD);
	QueueUserWorkItem(Thread2, L"I'm thread 2", WT_EXECUTEINLONGTHREAD);
	QueueUserWorkItem(Thread3, L"I'm thread 3", WT_EXECUTEINLONGTHREAD);

	WaitForSingleObject(hCompleteEvent, INFINITE);

	DeleteCriticalSection(&g_cs);

	CloseHandle(hCompleteEvent);
	//getchar();

	return 0;
}
//
DWORD WINAPI Thread1(PVOID pContext)
{
	EnterCriticalSection(&g_cs);
	wchar_t * wszVal = (wchar_t*)pContext;
	wcout << L"wszVal:" << wszVal << endl;
	LeaveCriticalSection(&g_cs);

	for(int i=0; i<=50; i++)
	{
		EnterCriticalSection(&g_cs);
		cout << "One Thread Output : " << i <<endl;
		LeaveCriticalSection(&g_cs);
	}

	return 0;
}
//
DWORD WINAPI Thread2(PVOID pContext)
{
	EnterCriticalSection(&g_cs);
	wchar_t * wszVal = (wchar_t*)pContext;
	wcout << L"wszVal:" << wszVal << endl;
	LeaveCriticalSection(&g_cs);

	for(int i=0; i<=50; i++)
	{
		EnterCriticalSection(&g_cs);
		cout << "Two Thread Output : " << i <<endl;
		LeaveCriticalSection(&g_cs);
	}
	return 0;
}
//
DWORD WINAPI Thread3(PVOID pContext)
{
	EnterCriticalSection(&g_cs);
	wchar_t * wszVal = (wchar_t*)pContext;
	wcout << L"wszVal:" << wszVal << endl;
	LeaveCriticalSection(&g_cs);

	for(int i=0; i<=50; i++)
	{
		EnterCriticalSection(&g_cs);
		cout << "Three Thread Output : " << i << endl;
		LeaveCriticalSection(&g_cs);
	}
	return 0;
}

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190015.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2020爱分析·智能通讯云厂商全景报告[通俗易懂]

    2020爱分析·智能通讯云厂商全景报告[通俗易懂]报告摘要企业面临业务增长的压力,通讯能力建设成为对内提升运营效率,对外提升产品竞争力和客户体验的重要手段,通讯云的场景应用正在加速渗透。基于对国内各行业甲方企业的调研,爱分析认为智能通讯云应用呈现以下趋势:•在提高内部运营效率方面,企业需要通过强化统一通讯能力,及提高办公智能化的方式实现;•对于企业的客服部门或呼叫中心而言,跑马圈地的时代已经过去,随着企业营销与服务渠道多元化,重心在促进营销转化与提升客户体验;•针对各行业的不同业务场景,通讯能力不仅是音视频交互工具的基础,还需..

    2022年5月18日
  • 数据仓库分三层_数据库分层

    数据仓库分三层_数据库分层数据仓库各层说明: 一、数据加载层:ETL(Extract-Transform-Load) 二、数据运营层:ODS(OperationalDataStore) 三、数据仓库层:DW(DataWarehouse) 1.数据明细层:DWD(DataWarehouseDetail) 2.数据中间层:DWM(DataWareHouseMiddle) 3.数据服务层:DWS(DataWareHouseService) 四、数据应用层:A

    2022年9月26日
  • CTK插件框架学习1-编译CTK-MINGW

    CTK插件框架学习1-编译CTK-MINGW首先下载CMake官网下载地址:https://cmake.org/download/

    2022年5月10日
  • c#防止代码被反编译_C程序反编译

    c#防止代码被反编译_C程序反编译1.在编码过程中尽量使用private/internal关键词修饰class、方法和字段名称2.编码过程尽可能少地使用public修饰class、方法和字段名称3.避免使用反射和序列化,反序列化操作4.添加生成事件,调用Dotfuscator进行代码混淆if$(ConfigurationName)==Debug”C:/ProgramFiles(x86)/MicrosoftVisualStudio14.0/PreEmptiveSolutions/Dotfuscatora

    2022年9月3日
  • IntelliJ Idea 2017 注册码 免费激活方法「建议收藏」

    IntelliJ Idea 2017 注册码 免费激活方法「建议收藏」!!!补充版本信息,博友反馈17.3版本之后的不能用。注:如果为2017.3之后的版本,参考评论中23楼提供的博文,最近比较忙,没能补充新版本激活方法。谢谢23楼博友!!!可使用以下两种

    2022年7月3日
  • spi协议详解_spi传输协议

    spi协议详解_spi传输协议说明.文章摘自:SPI协议及其工作原理浅析 http://bbs.chinaunix.net/thread-1916003-1-1.html一、概述.    SPI,SerialPerripheralInterface,串行外围设备接口,是Motorola公司推出的一种同步串行接口技术.SPI总线在物理上是通过接在外围设备微控制器(PICmicro)上面的微处

    2022年10月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号