线程池 ManualResetEvent[通俗易懂]

线程池 ManualResetEvent[通俗易懂]线程池:    “线程池”是可以用来在后台执行多个任务的线程集合。(有关背景信息,请参见使用线程处理。)这使主线程可以自由地异步执行其他任务。线程池通常用于服务器应用程序。每个传入请求都将分配给线程池中的一个线程,因此可以异步处理请求,而不会占用主线程,也不会延迟后续请求的处理。一旦池中的某个线程完成任务,它将返回到等待线程队列中,等待被再次使用。这种重用使应用程序可以避免为每个任…

大家好,又见面了,我是你们的朋友全栈君。

线程池:

  

  “线程池”是可以用来在后台执行多个任务的线程集合。(有关背景信息,请参见使用线程处理。)这使主线程可以自由地异步执行其他任务。

线程池通常用于服务器应用程序。每个传入请求都将分配给线程池中的一个线程,因此可以异步处理请求,而不会占用主线程,也不会延迟后续请求的处理。

一旦池中的某个线程完成任务,它将返回到等待线程队列中,等待被再次使用。这种重用使应用程序可以避免为每个任务创建新线程的开销。

线程池通常具有最大线程数限制。如果所有线程都繁忙,则额外的任务将放入队列中,直到有线程可用时才能够得到处理。

您可以实现自己的线程池,但是通过 ThreadPool 类使用 .NET Framework 提供的线程池更容易一些。

参见:https://msdn.microsoft.com/zh-cn/library/3dasc8as(vs.80).aspx

 

ManualResetEvent 类

  ManualResetEvent    允许线程通过发信号互相通信。  通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。 

当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态。  此线程可被视为控制 ManualResetEvent。  调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。  当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。  并释放所有等待线程。 

一旦它被终止,ManualResetEvent 将保持终止状态,直到它被手动重置。  即对 WaitOne 的调用将立即返回。 

可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,如果初始状态处于终止状态,为 true;否则为 false。

ManualResetEvent   也可以同 staticWaitAllWaitAny 方法一起使用。

 参见:https://msdn.microsoft.com/zh-cn/library/system.threading.manualresetevent(v=vs.110).aspx

转载于:https://www.cnblogs.com/ChineseMoonGod/p/4272088.html

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

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

(0)
上一篇 2022年7月18日 下午3:16
下一篇 2022年7月18日 下午3:36


相关推荐

  • cmd 返回目录操作

    cmd 返回目录操作1 打开 cmd exe 对话框 进入到 E project node 目录下 如图 cmd 返回上一级 cmd 返回组目录 2 返回根目录 在 cmd exe 弹出框中输入 cd 后按回车 即可返回到 e 盘的根目录 如图 cmd 返回上一级 cmd 返回组目录 3 返回上一级 在 cmd exe 弹出框中输入 cd 后按回车 即可返回到当前目录的上一个目录 如图 cmd 返回上一级 cmd 返回组目录

    2026年3月17日
    2
  • git 提交代码常用命令

    git 提交代码常用命令 一、master分支代码提交过程 gitlog 查看git合入的记录    gitpull从服务器重新拉代码,将本地代码更新为服务器上的最新代码 gitstatus查看本地代码状态,是否有待提交的代码  git add.  将本地代码全部提交  gitcommit-m"合入新的PUCCH和小区功率代码"   为本次提交添加注释 …

    2022年6月26日
    46
  • eclipse中导入Java文件「建议收藏」

    eclipse中导入Java文件「建议收藏」            eclipse中导入Java文件的方法
     在eclipse中导入Java文件分两种情况:1,如果要导入的Java文件就在eclipse工作空间WorkSpace目录下,则把包含相关Java文件的Java项目导入包资源管理器即可:文件(或者包资源管理器下点击右键)—->导入—->常规—>现有项目到工作空间—>在选择根目录下浏览选择WorkSpace中包含相关Java文件的Java项目,其他不用勾选,点击完成即可;2,如果要导入的Jav

    2022年7月8日
    24
  • How Powerful are Graph Neural Networks? GIN 图同构网络 ICLR 2019 论文详解

    文章目录1相关介绍Definition1:multiset数学上的单射(injective)2GNN怎么和Weisfeiler-Lehmantest关联起来?2.1符号定义2.2GraphNeuralNetworks2.3两类任务2.3Weisfeiler-Lehmantest图同构测试3WLtest是GNN性能的上限Lemma24什么样的GNN可以和W…

    2022年4月6日
    44
  • netstat 的详解

    netstat 的详解1、概述最近在调试一个网络方面的程序,用到了netstat感谢大家,我是假装很努力的YoungYangD(小羊)。参考资料:https://baike.baidu.com/item/Netstat/527020?fr=aladdin

    2022年7月22日
    12
  • SysUtils.QuotedStr – 加单引号

    SysUtils.QuotedStr – 加单引号举例:varss,s:string;beginss:=’Delphi’;s:=QuotedStr(ss);ShowMessage(s);{‘Delphi’}end;SysUtils单元下的公用函数目录

    2022年10月18日
    2

发表回复

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

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