2019年3月7日

单例模式下多线程注意

摘要: 在使用多线程时应当注意对公共数据的保护。 单例模式中,由于实例只有一份,所以在使用多线程时务必注意实例的公共部分。 在本示例中,该实例的私有字段作为线程的公共数据。 执行结果: 阅读全文

posted @ 2019-03-07 17:10 庭前花满留晚照 阅读(3697) 评论(0) 推荐(0) 编辑

2018年5月12日

三种方式构建C#单例模式

摘要: 1 /// 2 /// 双检锁实现单例 3 /// 4 public sealed class SingletonDoubleCheck 5 { 6 //s_lock对象是实现线程安全所需要的,定义这个对象时,我们假设创建单例对象的代价高于创建一个System.Object对象 7 //并假设... 阅读全文

posted @ 2018-05-12 11:25 庭前花满留晚照 阅读(926) 评论(0) 推荐(0) 编辑

使用Barrier分三步将大象放入冰箱

摘要: 1 class Program 2 { 3 //构造大象和冰箱 4 private static ElephantsAndFridges elephantsAndFridges = new ElephantsAndFridges(); 5 6 static void Main(string[] args) ... 阅读全文

posted @ 2018-05-12 11:25 庭前花满留晚照 阅读(282) 评论(0) 推荐(0) 编辑

C#的Lazy与LazyInitializer

摘要: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //初始化 Lazy 类的新实例 6 //当延迟初始化发生时,将使用指定的初始化函数和初始化模式 7 // 参数: 8 ... 阅读全文

posted @ 2018-05-12 11:24 庭前花满留晚照 阅读(1376) 评论(0) 推荐(3) 编辑

条件变量模式-让线程根据条件执行

摘要: 1 /// 2 /// 条件变量模式 3 /// 让线程根据条件执行 4 /// 5 public sealed class ConditionVariablePattern 6 { 7 //两个线程使用同一个锁 8 private readonly object m_lock = new obj... 阅读全文

posted @ 2018-05-12 11:24 庭前花满留晚照 阅读(458) 评论(0) 推荐(0) 编辑

构建线程安全队列示例

摘要: 1 /// 2 /// 线程安全的队列 3 /// 允许多个线程对队列入队出队 4 /// 注意:除非有一个可供处理的数据项,否则试图出队一个数据项的线程会一直阻塞 5 /// 6 /// 7 internal sealed class SynchronizedQueue 8 { 9 //进出... 阅读全文

posted @ 2018-05-12 11:24 庭前花满留晚照 阅读(242) 评论(0) 推荐(0) 编辑

ReaderWriterLockSlim使用示例

摘要: 1.一个线程向数据写入时,请求访问的其它所有线程都被阻塞。 2.一个线程从数据读取时,请求读取的其它所有线程允许继续执行,但请求写入的所有线程仍被阻塞。 3.向数据写入的线程结束后,要么解除一个写入线程的阻塞,使它能向数据写入,要么解除所有读取线程的阻塞,使他们能并发读取数据。如果没有线程被阻塞,锁 阅读全文

posted @ 2018-05-12 11:23 庭前花满留晚照 阅读(268) 评论(0) 推荐(0) 编辑

异步函数Demo

摘要: 1 private static async Task IssueClientRequestAsync(string serverName, string message) 2 { 3 Console.WriteLine("进入IssueClientRequestAsync"); 4 //NamedPipeC... 阅读全文

posted @ 2018-05-12 11:22 庭前花满留晚照 阅读(425) 评论(0) 推荐(0) 编辑

Task扩展方法取消操作

摘要: 1 /// 2 /// 任务扩展,传入取消操作 3 /// 4 public static class TaskExtensionDemo 5 { 6 //因为没有非泛型的TaskCompleteSource类 7 private struct Void { } 8 9 public ... 阅读全文

posted @ 2018-05-12 11:22 庭前花满留晚照 阅读(694) 评论(0) 推荐(1) 编辑

自旋和线程所有权及递归构成混合锁

摘要: 1 /// 2 /// 自旋、线程所有权、递归 3 /// 构成混合锁 4 /// 5 internal sealed class AnotherHybridLock : IDisposable 6 { 7 //基元用户模式构造(Interlocked的方法)使用 8 privat... 阅读全文

posted @ 2018-05-12 11:22 庭前花满留晚照 阅读(269) 评论(0) 推荐(0) 编辑

导航