gpt4 book ai didi

c# - 如果我锁定一个对象而另一个线程使用该变量会怎样?

转载 作者:太空狗 更新时间:2023-10-30 00:17:29 25 4
gpt4 key购买 nike

我不确定锁是如何工作的。
如果我有 List<T> list 会怎样和 2 个线程?
如果 thread1 首先开始运行并枚举该列表会发生什么

foreach(T t in list)
{
// code
}

同时,但是在thread1启动之后,thread2会锁住链表

lock(list)
{
// code
}

我使用 ThreadPool做一些处理,我需要知道锁是如何工作的以及线程是否安全

ThreadPool.QueueUserWorkItem(new WaitCallback(method), obj);

最佳答案

lock keyword不会“锁定”或“卡住”目标对象(在某种意义上防止更改)。

lock ensures that one thread does not enter a critical section of code while another thread is in the critical section. If another thread attempts to enter a locked code, it will wait, block, until the object is released.

因此在您的情况下,它不会阻止其他线程枚举列表。

关于c# - 如果我锁定一个对象而另一个线程使用该变量会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com