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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql修改语句_数据透视表中的字段能不能进行修改

    sql修改语句_数据透视表中的字段能不能进行修改HSQL修改tablecolumn的语法

    2025年11月27日
    3
  • 中国超级计算机的发展过程_超级计算机最新发展史

    中国超级计算机的发展过程_超级计算机最新发展史截至2009年初的数据过去,超级计算机主要用于军事,科学和航空航天等高端领域.如今,超级计算机已进入平民时代中国计算机发展,与人们的生活密不可分.随着中国第一台超级计算机“魔方”跻身世界前十名,中国逐渐成为超级计算机的强国.超级计算机将更频繁地扮演平民的“行军”,进入家庭,促进公共服务设施,甚至帮助人们治愈目前无法治愈的疾病……项目总投资:超过100亿元项目期限:1975年至今中国超级计…

    2022年10月19日
    5
  • 宝塔卸载命令_linux如何永久停用mysql

    宝塔卸载命令_linux如何永久停用mysql宝塔面板(linux)卸载方法及卸载后文件删除我们说过很多宝塔面板的教程,貌似没说过如何卸载宝塔面板,假如我们装置一款面板,都会请求要洁净纯洁的系统,就是说,假如你装置过环境可能会招致装置不胜利。宝塔面板能够装置,当然也能够卸载,官方也给出了卸载脚本,今天把这些办法罗列下写在这里。一:脚本卸载你需要先在面板中将通过面板安装的所有软件卸载,如nginx、mysql、php等等,然后,进入SSH…

    2025年9月18日
    6
  • web大文件上传解决方案_java上传文件到服务器

    web大文件上传解决方案_java上传文件到服务器在application.properties加入以下配置即可##视频上传大小spring.http.multipart.maxFileSize=50Mbspring.http.multipart.maxRequestSize=50Mb#end

    2022年10月10日
    2
  • pdf转word思路和方法

    pdf转word思路和方法本篇只涉及pdf转word,整理的一些方法,当前有效,个人观点。一、右键直接用word打开适合小文件转换。二、转换软件很多可以将pdf转word的软件,比如AdobeAcrobat,ABBYYFineReader等等,还有一些国产转换软件,百度网盘好像也可以,大部分转换也有限制,需要money,想支持也行,当然也可以去一些论坛,网站或者博客找一些大神免费版的,可以去杂货间http://jsywmy.ys168.com/看看,里面有一些网站论坛博客有。三、转换网站1、alltoall2.

    2022年5月29日
    44
  • 简述Redis持久化机制RDB和AOF优缺点_redis的aof和rdb

    简述Redis持久化机制RDB和AOF优缺点_redis的aof和rdb先通过故事理解一下RDB和AOF,再来详细讲讲两者的区别RDB和AOF的故事我是Redis,一个叫Antirez的男人把我带到了这个世界上。“快醒醒!快醒醒!”,隐隐约约,我听到有人在叫我。慢慢睁开眼睛,原来旁边是MySQL大哥。“我怎么睡着了?”“嗨,你刚才是不是出现了错误,整个进程都崩溃了!害得一大堆查询请求都给我怼过来了!”,MySQL说到。刚刚醒来,脑子还有点懵,MySQL大哥扶我起来继续工作。“糟了!我之前缓存的数据全都不见了!”“WTF?你没有做持久化吗?”,MySQL大哥一

    2025年8月15日
    3

发表回复

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

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