首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#中的锁定机制

c#中的锁定机制
EN

Stack Overflow用户
提问于 2014-04-01 20:52:02
回答 2查看 787关注 0票数 1

我希望实现一个锁机制,这样只有一个线程可以运行一个代码块。但是我不希望其他线程在锁对象上等待,如果锁定了,它们就不应该做任何事情。所以这和标准的锁机制有点不同。

代码语言:javascript
复制
if (block is not locked)
{
    // Do something
}
else
{
    // Do nothing
}

在C#中实现这一目的的最佳方法是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-01 20:54:26

然后,您应该使用班级,而不是使用锁。

摘录: MSDN中的Monitor.TryEnter()示例

代码语言:javascript
复制
// Request the lock. 
if (Monitor.TryEnter(m_inputQueue, waitTime))
{
   try
   {
      m_inputQueue.Enqueue(qValue);
   }
   finally
   {
      // Ensure that the lock is released.
      Monitor.Exit(m_inputQueue);
   }
   return true;
}
else
{
   return false;
}

正如马克·格雷维尔所指出的,waitTime也可以选择为零。根据不同的场景,10 on或100 on可能更有效。

票数 9
EN

Stack Overflow用户

发布于 2014-04-01 20:54:24

使用Monitor.TryEnter( lockObject, timespan) {..。}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22796630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档