随笔分类 -  多线程

摘要:目录: System.Threading.Monitor:提供同步访问对象的机制; lock 是语法糖,是对 Monitor Enter 和 Exit 方法的一个封装 lock 案例 1. Monitor 1. 基本方法 public static void Enter(object obj); 在 阅读全文
posted @ 2021-03-11 21:43 鑫茂 阅读(623) 评论(0) 推荐(2)
摘要:1. 类的关系 AutoResetEvent 和 ManualResetEvent 都继承自 System.Threading.EventWaitHandle 类(EventWaitHandle 继承自 WaitHandle); 用于线程交互 (或线程信号) 2. 常用方法 2.1 WaitHand 阅读全文
posted @ 2021-03-11 12:29 鑫茂 阅读(242) 评论(0) 推荐(0)
摘要:两个线程中的每一个线程都尝试锁定另外一个线程已锁定的资源时,就会发生死锁。 两个线程都不能继续执行。 托管线程处理类的许多方法都提供了超时设定,有助于检测死锁。 例如,下面的代码尝试在 lockObject 对象上获取锁。 如果在 300 毫秒内没有获取锁,Monitor.TryEnter 返回 f 阅读全文
posted @ 2021-03-11 12:28 鑫茂 阅读(145) 评论(0) 推荐(0)
摘要:1. 操作取消 1.1 步骤 实例化 CancellationTokenSource 对象,该对象管理取消通知并将其发送给单个取消标记 将 CancellationTokenSource.Token 属性返回的标记传递给每个侦听取消的任务或线程 为每个任务或线程提供响应取消的机制 if (token 阅读全文
posted @ 2021-03-11 12:26 鑫茂 阅读(786) 评论(0) 推荐(0)
摘要:1. 与 Task.Run() 的区别; 先看一下源码: public class Task : IThreadPoolWorkItem, IAsyncResult, IDisposable { public static Task Run(Action action) { StackCrawlMa 阅读全文
posted @ 2021-03-11 12:24 鑫茂 阅读(2078) 评论(0) 推荐(0)
摘要:IEnumerable<int> intList = Enumerable.Range(1, 15); foreach (int i in intList) { ThreadPool.QueueUserWorkItem(w => { Console.WriteLine("ThreadPool:" + 阅读全文
posted @ 2021-03-11 12:20 鑫茂 阅读(172) 评论(0) 推荐(0)
摘要:![](https://img2020.cnblogs.com/blog/1020027/202103/1020027-20210309192522741-723428598.png) 阅读全文
posted @ 2021-03-11 12:14 鑫茂 阅读(155) 评论(0) 推荐(1)