Вопросы по теме 'interlocked'

очень странная и серьезная проблема несогласованности многопоточности С#
У меня есть очень простая сторожевая программа с двумя потоками. Один поток обновляет длинную переменную, а другой поток читает эту переменную. и предупреждать, если прошло более X секунд с момента последнего обновления. Проблема в том, что иногда...
406 просмотров
schedule 07.01.2023

InterlockedExchange и видимость памяти
Я прочитал статью Синхронизация и Проблемы с многопроцессорностью , и у меня есть вопрос о InterlockedCompareExchange и InterlockedExchange. Речь идет собственно о последнем примере в статье. У них есть две переменные iValue и...
2933 просмотров
schedule 09.03.2022

Реентерабельный таймер в службе Windows
Я хочу создать службу Windows, которая должна выполнять разные методы в разное время. Дело вовсе не в точности. Я использую system.timers.timer и регулирую различные методы, которые будут выполняться в методе Eventhandler со счетчиками. Пока все...
2292 просмотров

Interlocked.Read / Interlocked.Exchange намного медленнее на Mono, чем на .NET?
Извините за длинный вопрос, но есть ссылка на Джона Скита, так что для некоторых это может оказаться полезным . Вкратце: Interlocked.Read / Interlocked.Exchange работает намного медленнее при работе в среде Mono, чем при работе в среде .NET....
1024 просмотров

Разъяснение Interlocked.Exchange
У меня есть несколько простых (надеюсь) вопросов, на которые я не смог найти ответы: Скажем, у меня есть объекты a, b, которые доступны для нескольких потоков. Interlocked.Exchange(ref a, b) Если «b» не является изменчивым, будет ли эта...
3336 просмотров
schedule 26.02.2023

как выполнить атомарное чтение для двойного?
Почему для double нет функции Interlocked.Read, поскольку для double доступны методы Interlocked.Exchange и Interlocked.CompareExchange, которые могут выполнять более сложные функции атомарно. Использование таких методов для атомарного чтения...
344 просмотров
schedule 12.03.2022

Замена блокировки заблокированной операцией
Есть ли способ заменить этот код с помощью Interlocked.Exchange API? if (IsWorking == false) { lock (this) { if (IsWorking == false) { IsWorking = true; } } }
700 просмотров
schedule 09.12.2022

Parallel.For() с Interlocked.CompareExchange(): более низкая производительность и несколько отличные результаты от последовательной версии.
Я экспериментировал с вычислением среднего значения списка, используя Parallel.For() . Я отказался от этого, так как он примерно в четыре раза медленнее, чем простая последовательная версия. Тем не менее, я заинтригован тем фактом, что он не дает...
217 просмотров
schedule 31.05.2022

Кэшируются ли переменные, используемые System.Threading.Timer?
Я пытаюсь устранить неполадки в процессе, который таинственным образом останавливается, и я пытаюсь определить, может ли у нас возникнуть проблема с кэшированием переменной и ее повторным чтением. В моем сценарии у меня есть операция, которая...
72 просмотров

Параллельная модификация элементов double[][] без блокировки
У меня есть зубчатый массив double[][] , который может одновременно изменяться несколькими потоками. Я хотел бы сделать его потокобезопасным, но, если возможно, без блокировок. Потоки вполне могут нацеливаться на один и тот же элемент в массиве,...
255 просмотров