关于lock和monitor的问题.

gxh2004 2007-01-17 11:15:19
monitor是用来锁对象的.lock是不是就是有守卫机制的monitor?保证在出某个区域的时间一定会释放?
...全文
270 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2007-01-18
  • 打赏
  • 举报
回复
当一个互斥锁已被占用时,在同一线程中执行的代码仍可以获取和释放该锁。但是,在其他线程中执行的代码在该锁被释放前是无法获得它的。
viena 2007-01-18
  • 打赏
  • 举报
回复
下列形式的 lock 语句

lock (x) ...
(其中 x 是一个引用类型的表达式)完全等效于

System.Threading.Monitor.Enter(x);
try {
...
}
finally {
System.Threading.Monitor.Exit(x);
}
不同的只是:实际执行中 x 只计算一次。
viena 2007-01-18
  • 打赏
  • 举报
回复
lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。
lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。
北京的雾霾天 2007-01-18
  • 打赏
  • 举报
回复
lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。
Monitor 类通过向单个线程授予对象锁来控制对对象的访问。

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧