static void Main(string[] args) { var strVault = new BasicVault <string>(string.Empty); Thread t1 = new Thread(() => { Thread.SpinWait(50000); using var lck = strVault.SpinLock(); lck.Value += "Hello from thread 1, DotNetVault! "; }); Thread t2 = new Thread(() => { using var lck = strVault.SpinLock(); lck.Value += "Hello from thread 2, DotNetVault! "; }); t1.Start(); t2.Start(); t2.Join(); t1.Join(); string finalResult = strVault.CopyCurrentValue(TimeSpan.FromMilliseconds(100)); Console.WriteLine(finalResult); }
static void TestNoBasicVaultForStringBuilder() { BasicVault <string> bv = new BasicVault <string>("Hi mom", TimeSpan.FromSeconds(2)); //BasicVault<StringBuilder> bv1 = new BasicVault<StringBuilder>(new StringBuilder("Hi mom"), TimeSpan.FromSeconds(2)); using var l = bv.SpinLock(); Console.WriteLine(l.Value.ToString()); }
public static void DoTest() { BasicVault <BvIllegalRefExprTestCase1> vault = new BasicVault <BvIllegalRefExprTestCase1>(new BvIllegalRefExprTestCase1("Foobar")); { using var lck = vault.SpinLock(); ref var toodles = ref lck.Value; Console.WriteLine(toodles.ToString()); }
public static void TestUriIsVs() { BasicVault <string> bvs = new BasicVault <string>("Hi mom", TimeSpan.FromSeconds(2)); //BasicVault<StringBuilder> bvsb = new BasicVault<StringBuilder>(new StringBuilder(), TimeSpan.FromSeconds(2)); using (var lck = bvs.SpinLock()) { Console.WriteLine(lck.Value); } }
public static void TestBasicVaultOfNullableNotUnmanagedValueType() { BasicVault <NotUnmanagedButVaultSafeValueType> bv = new BasicVault <NotUnmanagedButVaultSafeValueType>(new NotUnmanagedButVaultSafeValueType("Chris")); using (var lck = bv.Lock()) { Console.WriteLine(lck.Value.Name); } var thisTimeWithJohn = CreateBasicVault((string s) => new NotUnmanagedButVaultSafeValueType(s)); using (var lck = thisTimeWithJohn.Lock()) { Console.WriteLine(lck.Value.Name); } //BUG 49 fix verification BasicVault <NotUnmanagedButVaultSafeValueType?> nullableVb = new BasicVault <NotUnmanagedButVaultSafeValueType?>(null, TimeSpan.FromSeconds(2)); using (var lck = nullableVb.Lock()) { Console.WriteLine(lck.Value?.Name ?? "NULL"); lck.Value = new NotUnmanagedButVaultSafeValueType("Atticus"); } //Bug 49 fix verification as applied to Type Argument BasicVault <NotUnmanagedButVaultSafeValueType?> nullableVb2 = CreateBasicVault((string s) => (NotUnmanagedButVaultSafeValueType?)new NotUnmanagedButVaultSafeValueType(s)); using (var lck = nullableVb2.SpinLock()) { Console.WriteLine(lck.Value?.ToString() ?? "NULL"); lck.Value = null; Console.WriteLine(lck.Value?.ToString() ?? "NULL"); } }