add cancellable time span await

This commit is contained in:
Youmu Liu
2025-11-21 18:11:52 +08:00
parent 98f47aaa53
commit 61fbce14a2
3 changed files with 63 additions and 23 deletions
+5 -22
View File
@@ -43,15 +43,16 @@ namespace StgSharp.HighPerformance
public M64()
{
Unsafe.SkipInit(out this);
value = 0;
Unsafe.SkipInit(out vec);
Unsafe.SkipInit(out value);
}
public ref T AsRef<T>() where T: unmanaged,INumber<T>
public ref T AsRef<T>() where T : unmanaged,INumber<T>
{
return ref Unsafe.As<byte, T>(ref buffer[0]);
}
public void BroadCastFrom<T>(T value) where T: unmanaged, INumber<T>
public void BroadCastFrom<T>(T value) where T : unmanaged, INumber<T>
{
vec = Vector64.Create(value).AsSingle();
}
@@ -67,7 +68,7 @@ namespace StgSharp.HighPerformance
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ref T Member<T>(int index) where T: unmanaged, INumber<T>
public ref T Member<T>(int index) where T : unmanaged, INumber<T>
{
return ref Unsafe.As<byte, T>(ref buffer[index * sizeof(T)]);
}
@@ -77,28 +78,10 @@ namespace StgSharp.HighPerformance
return !(left == right);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static M64 operator <<(M64 m, int shift)
{
return new M64
{
value = m.value << shift
};
}
public static bool operator ==(M64 left, M64 right)
{
return left.value == right.value;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static M64 operator >>(M64 m, int shift)
{
return new M64
{
value = m.value >> shift
};
}
}
}