惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
D
DataBreaches.Net
雷峰网
雷峰网
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
B
Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Engineering at Meta
Engineering at Meta
月光博客
月光博客
V
Visual Studio Blog
美团技术团队
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
博客园 - 【当耐特】
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 聂微东

博客园 - 留云

dotnet core 自定义配置文件 Dotnet Core Windows Service golang 用tar打包文件或文件夹 golang 最和谐的子序列 golang 轮训加密算法 golang map golang 队列 golang 栈操作 golang 多维数组 golang 数组反转 nginx 在windows平台上对asp.net做反向代理 - 留云 树形结构应用技巧 用批命令更新数据库 c# 中Exception 的重试机制 jquery 调用wcf project HTTP协议之Session和Cookie SQL优化-索引 UML在关系型数据库设计中的应用 Web 应用的 UML 建模与 .NET 框架开发
C#多线程同步
留云 · 2009-06-18 · via 博客园 - 留云

在.Net的某些对象里面,在读取里面的数据的同时还可以修改数据,这类的对象就是“线程安全”。
但对于自己编写的代码段而言,就不需使用线程同步技术来保证数据的完整性和正确性了。

记住这点:
1、如果一个对象(或变量)不会同时被多个其他线程访问,那么这个对象是不需使用线程同步的。
2、如果虽然有多个线程同时访问一个对象,但他们所访问的数据或方法并不相同(不交叉),那这种情况也不需使用线程同步。
例如上例中的那个公司里面如果有 T 和 Q 两个人,但他们的工资分别是由 A 和 B 主管的,那么这个工资的处理就不需要线程同步了。
3、如果一个对象会同时被多个其他线程访问,一般只需为这个对象添加线程同步的代码,而其他线程是不需添加额外代码的。

Monitor的常用方法:Enter和Exit都是静态方法,作用跟lock语句的两个花括号一样。

而使用 Mutex 就不需声明一个“令牌”对象了,但要实例化之后才可以使用:

其中的WaitOne为等待方法,一直等到Mutex 被释放为止。初始的情况下,Mutex 对象是处于释放状态的,而一旦执行了WaitOne方法之后,它

就被捕获了,一直到被调用了ReleaseMutex方法之后才被释放。

使用这三种方法都有一个要注意的问题,就是在独占代码段里面如果引起了异常,可能会使“令牌”对象不被释放,这样程序就会一直地死等

下去了。