public void BeforeClass() { mySliceInt = BitSlice.Int(4); mySliceEnum = BitSlice.Enum <E4>(mySliceInt); mySliceBool = BitSlice.Bool(mySliceEnum); mySliceE1 = BitSlice.Enum <E1>(mySliceBool); }
public void InterlockedUpdateStressTest() { const int n = 10000; var slice1 = BitSlice.Bool(); var slice2 = BitSlice.Bool(slice1); var state = 0; for (var i = 0; i < 500; i++) { Parallel.Invoke(() => { for (var j = 0; j < n; j++) { Enter(slice1); Release(slice1); } }, () => { for (var j = 0; j < n; j++) { Enter(slice2); Release(slice2); } }); } void Enter(BoolBitSlice slice) { Assert.IsFalse(slice[state]); slice.InterlockedUpdate(ref state, true); } void Release(BoolBitSlice slice) { Assert.IsTrue(slice[state]); slice.InterlockedUpdate(ref state, false); } }