云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C#高效编程话题集

C#高效编程话题集

  • 62 次阅读
  • 3 次下载
  • 2026/1/25 0:55:11

1:在方法内,方法参数和局部变量,赋值为null无助于加速被垃圾回收器标识为垃圾;

2:实例变量,随着实例=null,实例变量也会自动=null。所以,一般情况下,无需显式为实例变量=null,除非你的实例生存周期较长,并且实例变量是个大对象;

3:静态变量,如果不显式置为null,就永远不会被回收; 27:不建议lock(this)

1:如果两个对象的实例分别执行了lock(this)这样的代码,实际锁定的是两个对象,完全不能达到同步的目的。

2:最好避免锁定 public 类型或锁定不受应用程序控制的对象实例。例如,如果该实例可以被公开访问,则 lock(this) 可能会有问题,因为不受控制的代码也可能会锁定该对象。这可能导致死锁,即两个或更多个线程等待释放同一对象。出于同样的原因,锁定公共数据类型(相比于对象)也可能导致问题。

28:区分计算密集型和I/O密集型的多线程应用场景

I/O密集型操作。硬盘、网卡、声卡、显卡等都是。CLR所提供的异步编程模型就是让我们充分利用硬件的DMA功能来提高CPU的利用率。

一个在大多数情况下正确的技巧是,凡是FCL中类型提供了类似BeginDoSomething方法的,都建议使用这个异步调用来完成多线程编码,异步在后台调用线程池线程完成调度,最大化的节约了系统的性能。

29:使用Parallel的一个陷阱 以下的代码的输出是什么?

int[] nums = new int[] { 1, 2, 3, 4 }; long total = 0;

Parallel.For(0, nums.Length, () =>{ return 1;}, (i, loopState, subtotal) =>{ subtotal += nums[i]; return subtotal;}, (x) =>Interlocked.Add(ref total, x));Console.WriteLine(\

实际上,它有可能是11,较少的情况下会是12,几乎不可能出现13,14。

要从方法的最后一个参数ActionlocalFinally讲起,它表示的其实是并行中如果新起了一个线程,那么这个线程结束时会调用这个localFinally。 而我们知道并行在后台采用的是线程池,也就是,我们不知道上面代码所发起的这个并行实际会发起多

少个线程,如果是1个,自然就是11,如果是2,结果自然就是12了,依此类推。之所以不可能为14,是因为,并发的循环体就只有4个循环,并发显然不会傻到新起4个线程来执行并发。

10:不建议lock(类型的type)

由于typeof(SampleClass),是SampleClass的所有实例所共有的,这会导致当前应用程序中的所有SampleClass的实例的线程,将会全部被同步。

搜索更多关于: C#高效编程话题集 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

1:在方法内,方法参数和局部变量,赋值为null无助于加速被垃圾回收器标识为垃圾; 2:实例变量,随着实例=null,实例变量也会自动=null。所以,一般情况下,无需显式为实例变量=null,除非你的实例生存周期较长,并且实例变量是个大对象; 3:静态变量,如果不显式置为null,就永远不会被回收; 27:不建议lock(this) 1:如果两个对象的实例分别执行了lock(this)这样的代码,实际锁定的是两个对象,完全不能达到同步的目的。 2:最好避免锁定 public 类型或锁定不受应用程序控制的对象实例。例如,如果该实例可以被公开访问,则 lock(this) 可能会有问题,因为不受控制的代码也可能会锁定该对象。这可能导致死锁,即两个或更多个线程等待释放同一对象。出于同样的原因,锁定公共数据类型(相比于对象)也可能导致

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com