• 『C#基础』多线程笔记「四」线程池


    现在到了关于多线最简单使用的最后一篇笔记。

    无论从什么角度来看,每一项事物都应该有其所在的空间,而对于线程来说,线程池就是它所存在的空间,或者叫容器了。

    关于线程池理论上的讲解,我找了几个大牛的文章链接,想要深入学习的可以去看下~

    1. http://www.cnblogs.com/jeffreyzhao/archive/2009/07/22/thread-pool-1-the-goal-and-the-clr-thread-pool.html
    2. http://www.cnblogs.com/JeffreyZhao/archive/2009/07/24/thread-pool-2-dedicate-pool-and-io-pool.html
    3. http://www.cnblogs.com/jeffreyzhao/archive/2009/10/20/thread-pool-3-lab.html
    4. http://kb.cnblogs.com/page/42531/

    接下来,看看这个线程池是如何使用的吧!

    概念:

    1. ManualResetEvent,通知一个或多个正在等待的线程已发生事件
    2. ManualResetEvent.Set(),将事件状态设置为终止状态,允许一个或多个等待线程继续
    3. ThreadPool.QueueUserWorkItem(…),将方法排入队列以便执行,并指定包含所用数据的对象。
    4. WaitHandle.WaitAll(…),等待指定数组中的所有元素都收到信号

    说明:

    如果只是从代码的使用上看,将一个方法加入线程池,只需要一行ThreadPool.QueueUserWorkItem(<方法名>),再加上一个ManualResetEvent对象,并不要忘记在方法执行完毕后,Set一下,这个就可以了。

    而对于更深一个层次的使用,就需要对CLR的远行机制以及对个人所要应用的项目特性进行了解、深入了。但是这明显不符合这篇笔记的主要目的,所以也就没必要去深究它了。

    如果想要更深入的了解,就去看上面已经给出的几个大牛的文章吧~

    代码:

    「官方示例」
    「我的最简代码」

    「我的最简代码」WorkerClass


    成果:

    image

  • 相关阅读:
    jenkins代码自动部署
    jenkins安装
    git图形管理工具
    gitlab自动备份恢复与卸载
    linux下获取外网IP
    网站安全webshell扫描
    jQuery动画效果实现
    form表单中的enctype属性什么意思?
    你那么努力又怎么样!
    话语
  • 原文地址:https://www.cnblogs.com/sitemanager/p/2424950.html
Copyright © 2020-2023  润新知