mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2024-10-22 17:41:41 +00:00
27 lines
623 B
C#
27 lines
623 B
C#
|
using System.Threading;
|
|||
|
|
|||
|
namespace Ryujinx.HLE.HOS.Services.Hid.Types.SharedMemory.Common
|
|||
|
{
|
|||
|
struct AtomicStorage<T> where T: unmanaged
|
|||
|
{
|
|||
|
public ulong SamplingNumber;
|
|||
|
public T Object;
|
|||
|
|
|||
|
public ulong ReadSamplingNumberAtomic()
|
|||
|
{
|
|||
|
return Interlocked.Read(ref SamplingNumber);
|
|||
|
}
|
|||
|
|
|||
|
public void SetObject(ref T obj)
|
|||
|
{
|
|||
|
ISampledData samplingProvider = obj as ISampledData;
|
|||
|
|
|||
|
Interlocked.Exchange(ref SamplingNumber, samplingProvider.SamplingNumber);
|
|||
|
|
|||
|
Thread.MemoryBarrier();
|
|||
|
|
|||
|
Object = obj;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|