小编Chr*_*phe的帖子

锁 vs Interlocked.Exchange

我有一个应用程序,它不断(+-100 毫秒)从 PLC 读取订单,然后将它们放入一个模型中,然后由多个客户端读取。为此,我使用 lock 语句。

订单阅读线程:

lock (model) {
//update object
}
Run Code Online (Sandbox Code Playgroud)

客户阅读:

lock (model) {
//serialize object to json string
}
send over tcp stream to client.
Run Code Online (Sandbox Code Playgroud)

但我也可以用于更新:

Interlocked.ExChange(oldObj, newObj)
Run Code Online (Sandbox Code Playgroud)

我不希望我的客户必须等待订单读取线程中发生的锁定。而且我绝对不希望客户阻止我的订单阅读线程。

我最好使用 Interlocked 吗?

感谢您的建议!

c# multithreading locking interlocked task

2
推荐指数
1
解决办法
2495
查看次数

标签 统计

c# ×1

interlocked ×1

locking ×1

multithreading ×1

task ×1