C++线程池实现_java线程池状态

C++线程池实现_java线程池状态在计算机程序中,线程是一种很重要的资源,使用的恰当可以极大的提高程序的效率,也就是多线程的使用,但是多线程会让应用程序变得异常复杂,会占用大量的系统资源。就像QQ表情一样,每一个QQ表情的闪动都需要构建一个线程,如果用户使用了大量的表情(GIF),将会有多少个线程在运行,系统的性能将大大减少,甚至导致死机。在这种情况下,多线程变得不太合适了,那么什么机制适用于这种情况下呢,这就是线程池。通常情

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

Jetbrains全系列IDE稳定放心使用

在计算机程序中,线程是一种很重要的资源,使用的恰当可以极大的提高程序的效率,也就是多线程的使用,但是多线程会让应用程序变得异常复杂,会占用大量的系统资源。就像QQ表情一样,每一个QQ表情的闪动都需要构建一个线程,如果用户使用了大量的表情(GIF),将会有多少个线程在运行,系统的性能将大大减少,甚至导致死机。在这种情况下,多线程变得不太合适了,那么什么机制适用于这种情况下呢,这就是线程池。

通常情况下,应用程序中采用异步调用函数的形式来实现多任务,在windows中,系统提供了QueueUserWorkItem函数实现异步调用,这个函数相当于在线程池中建立多个用户工作项目,跟普通线程机制一样,线程池也有线程的同步等机制。查MSDN,可看到QueueUserWorkItem函数语法如下:


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

Function就是用户定义的函数,context是P指针,也是Function的参数,Flags表示一组标志值,作用可通过查MSDN看到,这里就不在叙述。

下面实现了一个简单的线程池程序,没有什么大的功能,可以看到线程池的用法。

#include <iostream>
#include <assert.h>
#include <Windows.h>
#include <string>
using namespace std;
DWORD WINAPI TestThreadPool1(PVOID pContext);
DWORD WINAPI TestThreadPool2(PVOID pContext);
DWORD WINAPI TestThreadPool3(PVOID pContext);

CRITICAL_SECTION g_cs;

int main(int argc, char * argv[])
{

	QueueUserWorkItem(TestThreadPool1, L"Hello World", WT_EXECUTEDEFAULT);
	QueueUserWorkItem(TestThreadPool2, L"Hello World", WT_EXECUTEDEFAULT);
	QueueUserWorkItem(TestThreadPool3, L"Hello World", WT_EXECUTEDEFAULT);
	getchar();
	return 0;
}

DWORD WINAPI TestThreadPool1(PVOID pContext)
{

	for(int i=0;i<=100;i++)
	{
		cout<<"One Thread is : "<<i<<endl;
	}
	
	return 0;
}
DWORD WINAPI TestThreadPool2(PVOID pContext)
{

	for(int i=0;i<=100;i++)
	{
		cout<<"Two Thread is : "<<i<<endl;
	}
	return 0;
}
DWORD WINAPI TestThreadPool3(PVOID pContext)
{

	for(int i=0;i<=100;i++)
	{
		cout<<"Three Thread is : "<<i<<endl;
	}
	return 0;
}

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

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

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


相关推荐

  • 多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」 …

    多图详解 DeepMind 的超人类水准星际争霸 AI 「AlphaStar」 …雷锋网(公众号:雷锋网)AI科技评论按:英国当地时间1月24日,DeepMind在伦敦组织线上直播,向全世界的游戏AI研究人员以及游戏爱好者们介绍自己的AI研发最新进展。参加直播的DeepMind研究人员是DeepMind团队联合研发负责人OriolVinyals和DavidSilver,后者也是Alph…

    2022年6月1日
    40
  • 手机打开照相机_安卓11调用第三方相机

    手机打开照相机_安卓11调用第三方相机打开相机布局代码<Buttonandroid:id=”@+id/take_photo”android:layout_width=”match_parent”android:layout_height=”wrap_content”android:layout_gravity=”center”android:text=”打开相机”/><Buttonandroid:id=”@+id/chose_photo”andro

    2022年9月22日
    2
  • 事业单位图形推理1000题及答案_小学生图形推理题

    事业单位图形推理1000题及答案_小学生图形推理题  2020年事业单位联考:《职测》判断推理神预测!   经过几个月的紧张备考,广大考生终于在今天走上了“战场”。经过小时的奋笔疾书,2020年下半年事业单位联考职业能力测试于今天上午拉下帷幕。根据学员的惊喜反馈,我们发现华图教育又双叒叕预测中题目了!!!   通过考生们对题目的回忆,华图教育惊喜地发现有4个考点跟我们考前给学员预测的大致相同!下面我们就一起来简单看一下:   一…

    2025年8月27日
    7
  • Dubbo框架(Javassm框架)

    1.Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别WebService模式中的WSdl,以服务者

    2022年4月11日
    69
  • 配置二层交换机Vlan_华为模拟器交换机配置

    配置二层交换机Vlan_华为模拟器交换机配置二层交换机VLAN基础配置

    2025年11月13日
    3
  • Qt 音乐播放器「建议收藏」

    Qt 音乐播放器「建议收藏」一、实现功能:1、读取歌曲文件,实现歌曲的播放;2、采用QtDesigner实现歌曲的暂停和播放,歌曲名列表和当前播放歌曲名的显示,上一曲和下一曲歌曲的更换,播放模式的设置,音量的改变,歌曲播放进度的改变;3、读取歌词文件,实现歌词的显示;4、利用QSetting增加歌曲文件和歌词文件的设置功能;5、界面汉化;6、使用CSS进

    2022年4月30日
    67

发表回复

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

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