CodeQL 文档

在 lock 语句中锁定“this”对象

ID: cs/lock-this
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - reliability
   - maintainability
   - modularity
   - external/cwe/cwe-662
Query suites:
   - csharp-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

不建议在 lock 语句中使用 this,因为其他类也可能尝试锁定该对象,从而导致效率低下或死锁。

建议

创建一个 private readonly Object,专门用于锁定。这可以确保没有其他类可以使用同一个锁。

示例

以下示例使用名为 mutexprivate readonly 变量在 lock 语句中使用。

class ThreadSafe
{
    private readonly Object mutex = new Object();

    int value = 0;

    public void Inc()
    {
        lock (mutex)   // Correct
        {
            ++value;
        }
    }
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私