并发编程
小文_panda
无
展开
-
几种在并发编程中使用的集合
不可变集合 不会经常修改,可以被多个线程安全访问的集合。 特点: 不可变集合的一个实例是永远不改变的。 因为不会改变,所以绝对是线程安全的 对不可变集合使用修改方法时,返回修改后的集合 适用场合:共享状态。不适合用来做交换数据的通道,特别是在线程间的通信中不要使用不可变队列,可以适用生产者/消费者队列,可以获得更好的效果。 例子: var dictionary = Immutabl原创 2015-01-01 20:15:03 · 661 阅读 · 0 评论 -
TPL dataflow
转载地址http://www.cnblogs.com/haoxinyue/archive/2013/03/01/2938959.html 属性TPL Dataflow是微软面向高并发应用而推出的一个类库。借助于异步消息传递与管道,它可以提供比线程池更好的控制,也比手工线程方式具备更好的性能。我们常常可以消息传递,生产-消费模式或Actor-Agent模式中使用。在TDF是构建于Task Pa转载 2015-01-03 18:53:50 · 924 阅读 · 0 评论 -
Task基础知识
转载地址http://www.cnblogs.com/TianFang/archive/2009/11/02/1594783.html Task和ThreadPool的功能类似,可以用来创建一些轻量级的并行任务。对于将一个任务放进线程池 ThreadPool.QueueUserWorkItem(A); 这段代码用Task来实现的话,方式如下: Task.Factor转载 2015-01-03 17:32:35 · 1181 阅读 · 0 评论 -
并发,并行与异步
并发:同时做多件事情 比如服务端处理一个请求的同时可以处理另外一个请求。多线程是实现并发的一种方式。 并行处理:把正在执行的大量任务分割成小块,分配给多个同时运行的线程。 异步:不阻塞原有线程的执行,异步的程序在一段时间后执行。原创 2015-02-25 18:00:17 · 422 阅读 · 0 评论 -
ThreadPool的浅研究
线程的开销 1.线程有其自己的数据结构,创建一个线程需要存储空间 2.操作系统要调度线程,当线程切换(Context Switch)时 3.线程执行完任务后要销毁,释放其所占用的资源,同样影响性能 基于上述创建线程可能带来的问题,这就是为什么需要线程池了 每个CLR有一个线程池,CLR的所有AppDomain共享一个线程池,CLR初始化时线程池是没有线程的,当线程池收到请求时,线程池试图原创 2015-03-05 12:59:32 · 564 阅读 · 0 评论