多线程07-Monitor.TryEnter
class Program
{
static void Main()
{
object lock1 = new object();
object lock2 = new object();
new Thread(() => LockTooMuch(lock1, lock2)).Start();
lock (lock2)
{
Thread.Sleep();
Console.WriteLine("Monitor.TryEnter allows not to get stuck,returning false after a specified timeout is elapsed");
if (Monitor.TryEnter(lock1, TimeSpan.FromSeconds()))
{
Console.WriteLine("Acquired a protected resourece success");
}
else
{
Console.WriteLine("time out to get a resource");
}
}
new Thread(() => LockTooMuch(lock1, lock2)).Start(); lock (lock2)
{
Console.WriteLine("this will be a deadlock");
Thread.Sleep();
lock (lock1)
{
Console.WriteLine("Acquired a protected resourece success");
}
} }
static void LockTooMuch(object lock1, object lock2)
{
lock (lock1)
{
Thread.Sleep();
lock (lock2)
{ }
}
} }
多线程07-Monitor.TryEnter的更多相关文章
- 《C#多线程编程实战》1.11 Monitor.TryEnter()避免死锁
		这章的内容是真的有意思 特别是代码. 先贴上代码: class Program { static void Main(string[] args) { object lock1 = new objec ... 
- C# 多线程(lock,Monitor,Mutex,同步事件和等待句柄)
		本篇从 Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler 的类关系图开始,希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而 ... 
- 利用 Monitor.TryEnter 来规避 .NET 线程死锁的源代码
		在开发多线程的应用程序时,我们会大量用到 lock (...) {} 块.如果 lock 的对象比较多,非常容易发生死锁.死锁的发生很难预料,而且一旦发生在界面线程上,界面就不再刷新响和应用户输入:如 ... 
- C# Monitor.TryEnter 源码跟踪
		source: Monitor 获取指定对象的独占锁. [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical, __Dyn ... 
- 多线程:Monitor、synchronized、volatile
		Moniter的实现原理 再有人问你synchronized是什么,就把这篇文章发给他 深入理解Java中的volatile关键字 既生synchronized,何生volatile 
- 多线程07.thread-join
		package com.wangwenjun.concurrency.chapter5; public class ThreadJoin3 { public static void main(Stri ... 
- 多线程07:async、future、packaged_task、promise
		async.future.packaged_task.promise 本节内容需要包含头文件:#include <future> 一.std::async. std::future 创建后 ... 
- C#多线程系列(2):多线程锁lock和Monitor
		1,Lock lock 原型 lock 编写实例 2,Monitor 怎么用呢 解释一下 示例 设置获取锁的时效 C# 中,可以使用 lock 关键字和 Monitor 类来解决多线程锁定资源和死锁的 ... 
- C#多线程学习之:Monitor类
		关于对C#多线程类Monitor的理解 1.对线程的理解 围绕着锁周围的线程可以分为以下三类: l 拥有锁的线程:只有一个 l 就绪队列:只有就绪队列里的线程才有机会在锁被释放时去获取锁. l ... 
- 多线程状态与优先级、线程同步与Monitor类、死锁
		一.线程状态 二.线程优先级 三.初步尝试多线程 class Program { static void Main(string[] args) { while (true) { MessagePri ... 
随机推荐
- pyqt5-QPlainTextEdit普通文本
			继承:QAbstractScrollArea QPlainText和QTextEdit大致功能实现差不多,不能有图片.框架.表格等 QPlainText是安行滚动的,QTextEdit是安像素滚动的 ... 
- 6398. 【NOIP2018模拟10.30】Generator(树状数组区间修改)
			题目描述 Description Input Output 输出 q 行,第 i 行表示数据 Di 的答案. Sample Input 4 3 2 1 1 2 4 2 1 2 1 1 3 5 2 2 ... 
- 安装VS2017
			www.visualstudio.com/zh-hans/downloads/ https://visualstudio.microsoft.com/zh-hans/thank-you-downloa ... 
- Mysql数据库常见试题
			引用自http://blog.csdn.net/laoniyouxi123/article/details/51161157 sql语句应该考虑哪些安全性? 答: (1)防止sql注入,对特殊字符进行 ... 
- sublime格式化
			https://nodejs.org/dist/v6.2.0/node-v6.2.0-x64.msi sublime格式化 
- Content-type的几种常见类型
			一.是什么? 是Http的实体首部字段,用于说明请求或返回的消息主体是用何种方式编码,在request header和response header里都存在. 二.几个常用类型: 1.applicat ... 
- Amaze ui tree 刷新数据
			最近在做代码生成器,界面用的是Amaze ui ,但是在用tree的时候发现数据绑定不会自动更新,去百度.谷歌查也没有查到,没办法只能自己做一个demo 在这贴上效果图 demo 下载地址https: ... 
- 树莓派安装配置teamviewer host
			过程: 下载teamviewer,直接到teamviewer的官网上直接下载 下载完后,安装teamviewerw sudo dpkg -i 下载的文件的路径+文件名 安装完后会提示存在依赖问题,修复 ... 
- 利用python进行数据分析--numpy基础
			随书练习,第四章 NumPy基础:数组和矢量运算 # coding: utf-8 # In[1]: # 加注释的三个方法1.用一对"""括起来要注释的代码块. # 2. ... 
- 移动端与PHP服务端接口通信流程设计(基础版)
			转载自:http://blog.snsgou.com/post-766.html --->非开放性平台 --->公司内部产品 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的 ... 
