本站业务范围:1、PC端软件开发、网站开发 2、移动端APP、网站、微信接口、微商城开发 3、视频教程、课程设计和辅导 4、单片机开发 5、串口通讯调试
 当前位置:文章中心 >> vs2015_vs2017_vs2010_vs2012_vs2018
立即购买视频教程 使用线程池提高性能 Socket网络编程学习笔记(6)
夜鹰教程网 来源:www.yyjcw.com 日期:2016/11/10 13:32:15
Windows操作系允许用户维持一池“预先建立的”线程,这个线程池为应用程序中指定的方法提供工作线索。一个线程控制线程池的操作,并用应用程序可以分配附加的线程进行处理。 

这篇文章不能解决你的问题?我们还有相关视频教程云课堂 全套前端开发工程师培训课程

微信号:yyjcw10000 QQ:1416759661  远程协助需要加QQ!

业务范围:视频教程|程序开发|在线解答|Demo制作|远程调试| 点击查看相关的视频教程

技术范围:全端开发/前端开发/webapp/web服务/接口开发/单片机/C#/java/node/sql server/mysql/mongodb/android/。 



 在前几篇介绍中,不论是服务端的侦听还是客户端的连接都是通过新建一个线程去执行特定功能的。在这种情况下,一量有一个新客户端需要连接,则又得创建新的线程,而当程序创建新线程时,往往需要大量的内部开销,这对程序的性能有一定的影响。在.NET库中提供了一种方法,可以避免一些开销。而在Socket通讯中还有另一种访求那就是异步Socket,我不知道用这种方式的性能如何,在这里且不管这种形式,主要来看一下用线程池解决问题。

      Windows操作系允许用户维持一池“预先建立的”线程,这个线程池为应用程序中指定的方法提供工作线索。一个线程控制线程池的操作,并用应用程序可以分配附加的线程进行处理。在默认情况下,在线程池中有25个预处理线程,用这种方式可以满足一些小应用。

      如果要为线程池中的线程注册一个代表,则用下面的格式:

      ThreadPool.QueueUserWorkItem(new WaitCallback(Counter));
      
      其中QueueUserWorkItem是ThreadPool类的一个静态方法;而Counter参数代表运行在线程中的方法,在这要注意的是该Counter方法必须包含一个object 参数,这个在下面的例子中有体现;另外,处Thread对象不一样,代表一旦放置在线程池查询中上,将被处理,不需要其他的方法启动该项工作;当主程序线程退出,所有的线程池线程都将终止,主线程不会等待线程池线程结束。

      下面我们来看看怎么样运用到我上面讲的例子中去:

      原有线程调用:

      clientThread = new Thread(new ThreadStart(ReceiveData));
      clientThread.Start();

      用线程池只要一句就可以了:

      ThreadPool.QueueUserWorkItem(new WaitCallback(ReceiveData));

   

原文链接:http://www.cnblogs.com/licongjie/archive/2006/10/30/544638.html

复制链接 网友评论 收藏本文 关闭此页
上一条: 指针是什么  下一条: 发送和接收实体类数据 Socket网络编程学…
  推荐教程/优惠活动