I am thinking about using a generic version of Thread.VolatileRead and Thread.VolatileWrite. The code is similar to existing one (actually there are plenty of overloads) with the difference of generic type parameter:
[MethodImpl(MethodImplOptions.NoInlining)] public T VolatileRead(ref T address) { T result = address; Thread.MemoryBarrier(); return result; } [MethodImpl(MethodImplOptions.NoInlining)] public void VolatileWrite(ref T address, T value) { Thread.MemoryBarrier(); address = value; }
Why would I use generics if there is plenty of overloads already there? Because you have to perform casting to and from object since there is a single overload that accepts reference (ref object address that is). Here is an example:
Tubo tubo = new Tubo(); object param = tubo; Tubo read = (Tubo)Thread.VolatileRead(ref param);
Isn’t the following code much better?
Tubo tubo = new Tubo(); Tubo read = MyThread.VolatileRead(ref tubo);
The questions is whether my code is correct or not. Sure it looks like correct but one never knows for sure when dealing with threading. Feedback appreciated.
HedaWhece - nedelja, 17. november 2024
<a href=https://fastpriligy.top/>priligy dapoxetine 60mg</a> 29 Also, there is evidence for the presence of PGE2 receptors in rat kidney, most of which are found in the outer medulla with a similar distribution to the Tamm Horsfall glycoprotein, indicating that they are located in TAL cells