gpt4 book ai didi

c# - 可以使用 Interlocked.CompareExchange with a Bit 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:00 26 4
gpt4 key购买 nike

我有一个整数数组,用于跟踪 10,000 个并发任务的完成情况,其中值为 1 或 0。我认为如果这个数组是一个位数组并且每个并发线程都使用 interlocked 会更有效率。CompareExchange (或类似的)改变一个位。

如果 Interlocked 没有“位”的重载,我应该如何处理这个问题?

最佳答案

您可以在循环中使用 Interlocked.CompareExchange(ref int, int, int) 来伪造它,但我认为它不会更有效:

private static void SetBit(ref int valueToUpdate, int bitToSet)
{
while (true)
{
int oldValue = valueToUpdate;
int newValue = oldValue | bitToSet;
int result = Interlocked.CompareExchange(ref valueToUpdate, newValue, oldValue);
if (result == oldValue) break;
}
}

关于c# - 可以使用 Interlocked.CompareExchange with a Bit 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586075/

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