Очевидный способ сделать это будет с блокировкой.Резьбовая левая смена
Но я знаю, что существует класс Interlocked
в C#, что хорошо для приращения и уменьшения потока, поэтому я задавался вопросом, есть ли что-то подобное, что позволило бы мне сделать то же самое для двоичных операций, таких как сдвиг влево.
Есть что-нибудь вроде Interlocked
класс для оператора с левым сменом?
Оператора сдвига влево сам по себе является атомарной операцией. Чтобы уточнить, вы просите безопасный для потока способ сдвига влево и присваиваете значение? 'x = x << y;', правильно? – StriplingWarrior
- это приращение и декремент. но при изменении значения несколькими потоками он работает неправильно –
Вы всегда можете использовать 'Interlocked.CompareExchange' в цикле. – CodesInChaos