摘要:
要实现对象的相等比较,需要实现IEquatable,或单独写一个类实现IEqualityComparer接口。像List的Contains这样的函数,如果我们自己定义的对象不实现IEquatable接口,这个函数会默认调用object的Equels来比较对象,得出非预期的结果。先自定义一个类: ... 阅读全文
推荐排行榜
GC垃圾回收——有用的函数和类
2012-08-01 16:10 by xiashengwang, 5692 阅读, 收藏,
摘要:
1,AddMemoryPressure和RemoveMemoryPressure 这两个方法主要用于本地资源,比如一个位图占用了50M本地内存,但是托管对象只包含一个HBitMap(4字节或8字节)。但CRL并不知道这个内存压力,它可能允许你分配数百个位图,因为它们占用的托管内存太少了。这两个方法的目的就是要告诉GC它实际的本地资源用了多少内存量,GC知道这个信息后会调整它的垃圾回收策略,当压力变大时,他就强制执行垃圾回收。 private void MemoryPressureDemo(int size) { //创建一组对象,并指定它们的... 阅读全文
混合线程同步核心篇——自定义混合同步锁,Monitor,lock,ReaderWriterLockSlim・・・
2012-08-31 10:18 by xiashengwang, 2800 阅读, 收藏,
摘要:
前两篇博客,分别介绍了用户模式和内核模式的同步构造,由于它们各有优势和劣势。本文将介绍如何将这两者的优势结合在一起,构建一个性能良好的同步机制。一,实现一个简单的混合同步锁#region hybird lock/// /// 简单的混合同步锁/// private sealed class Hybi... 阅读全文
《CLR via C#》笔记——线程基础
2012-07-20 14:22 by xiashengwang, 1427 阅读, 收藏,
摘要:
一,Windows为什么要支持线程 进程(process)是应用程序的一个实例要使用的资源的一个集合。每个进程都有一个虚拟化的地址空间,确保一个进程的代码不会被另外一个进程访问,这确保了应用程序的健壮性和安全性。但当应用程序执行一个无限循环,系统中又只有一个CPU时,他会执行无限循环,不能执行其他东西。为此,Mircorsoft引入了线程。线程(thread)的职责就是对CPU进行虚拟化,Windows为每个进程提供了该进程专用的线程。如果应用程序进入无限循环,与代码相关的进程会被“冻结”,但其他进程可以继续执行。二,线程开销线程会产生空间和时间上的开销。每个线程都包含以下要素:●线程内核对象 阅读全文
c#修改系统时间的方法
2011-12-21 17:06 by xiashengwang, 5456 阅读, 收藏,
摘要:
C#没有提供直接的方法对系统时间进行设定,一般我们只能通过DateTime.Now获取系统时间,但是并不能对这个时间进行修改。这里对了解的主要的两种方式做了个整理,希望对大家有帮助。方法一,用API函数的方式来修改时间。首先定义API函数 [StructLayout( LayoutKind.Sequential)] public struct SYSTEMTIME { public ushort wYear; public ushort wMonth; public ushort wDayOfWeek; public u... 阅读全文
浙公网安备 33010602011771号