![]() |
1
9
你是对的;
但是,有些情况下需要使用
|
![]() |
2
5
这是因为没人知道。传播信息! |
![]() |
3
4
简短的回答是因为
如果您从未简单地读取变量的值(换句话说,您的所有工作都是通过调用
公认的答案
this question
应该提供更多关于你能做什么的信息。简而言之,大多数人使用
|
![]() |
4
2
我曾经读过一篇关于所谓的非原子和原子(在vb中:互锁)操作的很好的解释,并试图总结一下。
->其他线程可以在这些streps之间工作
->处理原子操作时,其他线程无法执行工作,原子操作始终作为整体处理 联锁类是这样的原子操作的集合,因此根据定义是线程安全的。 即使多个线程对同一个变量执行读写操作,这些操作也绝对是线程安全的。 这些线程安全命令的组合仍然是不安全的,因为原子操作之间可能会出现竞争条件。 因此,如果您想比较两个变量,然后增加较小的一个,这不是线程安全的,即使它们自己的单个操作是(interlocked.compare,interlocked.increment)。 在这里你仍然需要使用同步锁。 除此限制外,互锁不存在“隐藏的不良一面”。 a=5的外消旋条件的一个例子:
选项1:
或选项2:
或选项3:
带联锁增量: 选项1:
或选项2:
->在所有情况下,假设A=8,线程安全解决方案 在这里发布的所有问题都可以通过将这个简单的示例应用于可疑代码来解决。 希望这能帮助其他人谷歌这个话题。 贾尼斯 |
![]() |
5
1
例如,如果要将项目添加到共享列表(t),则仍需要
|
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |