摘要:首先声明的是,CRL线程池指的是 System.Threading.ThreadPool。1,CLR中的一个线程池运行于一个进程,被进程中所有appdomain通用。2,线程池中的线程在被用完回归到池中时,TLS槽的数据会被保留,其他数据如表示状态,身份模拟,优先级等会被清除。3,当工作项进入线程池时,新线程被创立,直到达到最优线程数。最优线程数等于CPU数量。达到这个数量后,线程池采用启发式规则管理线程: a,达到最优数量后,新线程创建速率被控制在500毫秒一个。 b,后台有一个守护进程管理线程池,观察是否存在线程饥饿或是空闲,按照复杂的算法决定是否创建或者移除线程。其中考虑cpu的利用情况
阅读全文
摘要:一,数据同步CLR的数据同步包装简单到用c#用Lock关键字,vb.net用SyncLock围出一个临界域就好了。更细一步的话,提 供了读写锁类ReaderWriterLockSlim 类,这是在3.5后出现的类,用于取代1.1的ReaderWriterLock 类。ReaderWriterLock直到2.0修复了部分问题但是还存在些问题,这里有篇很好的文章说明了读写锁。通过读写锁,不必什么都是独占锁,共读提高性能。二,控制同步CLR提供了Monitor类,其有三个方法:Wait(object obj);Monitor.Pulse(object obj);Monitor.PulseAll(ob
阅读全文
摘要:从本人的历程来看,我们首先了解System.Linq.Expression这个类开始比较好,通过研究它的方法和属性,我们可以运行一些实例来加深对表达式树的理解和大致了解这个类提供的功能集合。2010 版本的类链接为:http://msdn.microsoft.com/en-us/library/system.linq.expressions.expression.aspx。Expression的方法非常丰富大致这么几类:1,操作:加减乘除,一元操作,位操作,布尔操作,赋值,等等,一种编程语言的各种操作。2,语句:条件语句,循环,Try catch,Finalize等各种编程语言的语句。3,in
阅读全文
摘要:本文基本是对一篇博文的翻译,原址:Expression Tree Basics。大部分Linq新手会觉得表达式树难以理解和掌握。这篇文字希望引导初学者神速了解Linq,并终止得到一个茅塞顿开的感觉。表达式树提供了把执行代码转成数据的功能,这种能力对于想在执行时修改或者转化代码的人非常有价值。你可以把c#代码如Linq 查询表达式放到另个进程去执行,比如SQL database。但是,首先要说明的是你只会在文章的最后才会容易理解到它对转化代码到数据有很大的帮助。首先,我会提供一个简单场景。让我们从一个简单的实例.动态方法理解考虑到这样一个lambda表达式:Func<int, int, i
阅读全文