gpt4 book ai didi

c# - 将整数增加到 65535 的最佳线程安全方法

转载 作者:可可西里 更新时间:2023-11-01 08:19:47 24 4
gpt4 key购买 nike

我有一个 System.Timers.Timer,它每 3 秒递增一个计数器。在某些情况下,另一个线程也可以将此变量设置为任何值。

尝试使用 Interlocked.Increment 但它没有 UInt16 的重载。接下来要考虑的是锁定,但我不太确定如何对该变量进行线程安全访问(读/写/递增)。

已编辑:代码最初使用 int,但按照建议更改为 UInt16

private volatile System.UInt16 mCounter = 0;
private readonly object mCounterLock = new object();
public System.UInt16 Counter {
get {
lock (mCounterLock) {
return mCounter;
}
}
set {
lock (mCounterLock) {
mCounter = value;
}
}
}
private System.Timers.Timer mCounterTimer;

void mCounter_Elapsed(object sender, System.Timers.ElapsedEventArgs e) {
lock (mCounterLock) {
Counter++;
}
}

最佳答案

使用 Interlocked.CompareExchangeInterlocked.Increment 的组合,如果值达到 65535,则分配 0

关于c# - 将整数增加到 65535 的最佳线程安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698461/

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