- 博客(5)
- 资源 (6)
- 收藏
- 关注
原创 .NET线程同步之SpinLock构造
接着上一篇博客讨论了.NET线程同步的Interlocked构造,本篇博客来讨论一下SpinLock构造。Interlocked构造虽然很好用,但是它只是对一个变量或一个字段做一个原子操作,如果我们想对将一组操作封装为原子性操作,或者我们希望某段代码任何时候都不能在多个线程中同时运行,就可以使用SpinLock。我想到一个应用场景。System.Collections.Generic.St
2017-07-08 10:50:47 824
原创 .NET线程同步之Interlocked构造
接着上一篇博客.NET线程同步之Volatile,本篇来讨论如何使用Interlocked来处理线程安全的原子性读写操作。引出问题开始详细介绍System.Threading.Interlocked类之前,我们来先实现一个功能:在多个线程中同时增长一个公共变量。static void Main(string[] args){ Parallel.For(0, 10000,
2017-07-07 20:49:27 1591
原创 .NET线程同步之Volatile构造
编译器优化c#编译器会在不改变我们的意图的情况下做一些优化,比如:a = 1;a = 2;编译器编译之后,可能就只剩下第二行了。 再比如:a = 1;b = a;编译器优化后,可能会把第二行优化成b = 1 再比如:a = m;b = n;编译器生成IL时,有可能会改变两行代码的顺序。 以上变化都是在编译器认为不改变作者意图的前提下做的,如果在单线程环境下这也没有问题,但是如果是多线程环
2017-07-06 22:48:18 2122
原创 深入理解c#异步函数
在之前的博客c# async await中,我演示了如何使用async和await来实现异步编程。本篇博客来讨论async和await是如何工作的。假设有一个asp.net的接口,接收到参数后需要请求数据库,然后将结果返回,数据库操作耗时1秒钟。 当某个时间点同时有100个请求,这些请求会入队列等待资源池的调度,然后资源池分配若干个线程来处理队列中的任务,这些线程执行后开始请求数据库,由于数
2017-07-06 20:48:56 3528
原创 浅谈.NET垃圾回收
本篇博客简单地从以下几个方面讨论一下.net的垃圾回收(GC)问题何时进行垃圾回收回收哪些对象回收过程和回收算法编程建议何时进行垃圾回收一般情况下,.net在创建对象时发现托管堆的内存不够用了,就会进行垃圾回收。除此之外,手动调用GCCollect()方法时也会进行回收,还有就是当windows报告低内存时以及应用程序关闭时,也都会进行垃圾回收。当.net clr试图创建
2017-07-01 19:14:19 1483
Sun Java System Application Server Performance Tuning Guide.pdf
2021-10-08
NorthWind数据库
2012-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人