线程池 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   也可以同 staticWaitAll 和 WaitAny 方法一起使用。

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


相关推荐

  • python mysql 清空表数据

    python mysql 清空表数据mydb=mysql.connector.connect(user=user,password=pwd,host=‘127.0.0.1’,database=‘stock’)mycursor=mydb.cursor()mycursor=mydb.cursor()sql=‘truncatetablehistory’##清空#mycursor.execute…

    2022年6月12日
  • Python如何将字符串分割成单个字符,并形成一个list?

    Python如何将字符串分割成单个字符,并形成一个list?一个字符串可以看做是一个list具体操作如下>>>a="这是一段话">>>a[0]’这’>>>list(a)[‘这’,’是’,’一’,’段’,’话’]>>>forxina: print(x) 这是一段话>>>所以

    2022年5月10日
  • SLAM技术课程总结「建议收藏」

    SLAM技术课程总结「建议收藏」这学期SLAM技术课程遇到最多的问题,或者说困难更合适,其实和学生无关。专业培养方案中,SLAM技术是双语课程,但此课对数学要求极高,通常应用型本科院校学生的数学基础并不具备直接学习此课程的条件; 操作环境要求学生需在Linux系统下完成,虽然现在有云端实践平台,但掌握基本的Linux命令依然是必不可少的基础,对于机器人工程专业学生而言,课程体系忽略了这块训练,使此课孤立于课程体系中,无法和现有培养方案的其他课程形成良性互动; 编程要求C++11,当然能够掌握14以上更好,而之前的课程多侧重于C和

    2022年10月1日
  • JAVA——Tess4J简单的图像识别DEMO

    JAVA——Tess4J简单的图像识别DEMO基本概念TesseractOpenSourceOCREngine:包含一个OCR引擎-libtesseract和一个命令行程序-tesseract。Tesseract4添加了一个新的基于LSTM的OCR引擎,该引擎专注于行识别,但仍支持Tesseract3的传统TesseractOCR引擎,该引擎通过识别字符模式进行工作。通过使用传统OCR引擎模式(–oem0),可以与Tesseract3兼容。它还需要训练有素的数据文件来支持旧式引擎,例如tessdata存储库中的文件。…

    2022年6月5日
  • PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件”

    PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件”

    2021年10月10日
  • VM无法与SecureCRTPortable.exe 相连接不上时

    VM无法与SecureCRTPortable.exe 相连接不上时1.IP地址已经配置成功2.打开后打开后连接不上3.点击更改设置还原默认设置4.在重新将子网ip改为192.168.100.05.这样就OK了

    2022年6月5日

发表回复

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

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