首页 > 解决方案 > 有没有办法在 C# 中对两个字节执行原子(读-更新-写)OR 操作?

问题描述

我查看了 .NET 5 中的Interlocked.Or方法。这对于两个整数值非常有用。有没有办法对两个单独的字节值执行等效的操作?

我搜索了文档,我可以看到InterlockedOr8存在于 中winnt.h,但是 P/Invoking 它不会产生良好的性能特征。

我尝试Interlocked.CompareExchange<T>如下调用,只是想看看我是否可以用一些字节值简单地调用它:

var map = new byte[268435456];
Interlocked.CompareExchange(ref map[0], (byte)137, (byte)137);

但我收到以下错误:

错误 CS0452 类型 'byte' 必须是引用类型才能将其用作泛型类型或方法 'Interlocked.CompareExchange(ref T, T, T)' 中的参数 'T'

标签: c#.netbit-manipulation.net-5interlocked

解决方案


推荐阅读