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

InterlockedExchange и выравнивание памяти
Я смущен тем, что Microsoft утверждает, что для InterlockedExchange требуется выравнивание памяти, однако в документации Intel говорится, что выравнивание памяти не требуется для LOCK. Я что-то упускаю или что-то еще? Благодарность из библиотеки...
2549 просмотров
schedule 19.12.2023

Это правильный дизайн синхронизации Interlocked?
У меня есть система, которая берет образцы. У меня есть несколько клиентских потоков в приложении, которые заинтересованы в этих образцах, но фактический процесс взятия образца может происходить только в одном контексте. Это достаточно быстро, чтобы...
1197 просмотров

Использование Interlocked.CompareExchange с классом
Оператор System.Threading.Interlocked.CompareExchange обеспечивает атомарную (таким образом потокобезопасную) реализацию на C # операции сравнения и замены. Например, int i = 5; Interlocked.CompareExchange(ref i, 10, 5); . После этой команды int...
13591 просмотров
schedule 20.05.2022

Как использовать взаимосвязанные операции с файлами, отображаемыми в память, в .Net
Есть ли способ использовать методы Interlocked.CompareExchange(); и Interlocked.Increment(); для значений, хранящихся в файле с отображением памяти? Я хотел бы реализовать многопоточную службу, которая будет хранить свои данные в файле с...
1129 просмотров

Поля, считываемые / записываемые несколькими потоками, взаимосвязанные и изменчивые
Здесь, на SO, довольно много вопросов о Interlocked и volatile , я понимаю и знаю концепции volatile (без переупорядочивания, всегда чтение из памяти и т. Д.), И я знаю, как работает Interlocked в том смысле, что он выполняет атомарная...
754 просмотров
schedule 31.07.2023

.net System.MemberwiseClone и блокировка операций записи
При выполнении MemberwiseClone массива типов значений: var arr = new double[100]; Если эти двойники изменяются с помощью Interlocked write в других потоках, будет ли копия MemberwiseCloned подвергаться риску разрыва двойников в ней? Меня не...
84 просмотров
schedule 05.10.2022

Использование синхронизации Interlocked.CompareExchange с объектом синхронизации в обработчике Timer HandleElapsed
Я читаю пример MSDN http://msdn.microsoft.com/en-us/library/system.timers.timer.stop.aspx В примере с timer.stop я подозревал, что его способ использования Interlocked.CompareExchange неверен. private static void HandleElapsed(object sender,...
2018 просмотров
schedule 08.06.2022

Interlocked.Increment против блокировки в режиме отладки и в режиме выпуска
Я проверял, как Interlocked.Increment и lock ведут себя на архитектуре моего компьютера, потому что я прочитал следующие строки в эта статья . Как переписано с Interlocked.Increment, метод должен выполняться быстрее, по крайней мере, на...
445 просмотров

Delphi [volatile] и InterlockedCompareExchange ненадежны?
Я написал простой стек узлов без блокировки (Delp[hi XE4, Win7-64, 32-разрядное приложение), в котором я могу иметь несколько «стеков» и одновременно извлекать/проталкивать узлы между ними из разных потоков. Он работает в 99,999% случаев, но в...
1684 просмотров

Сроки когерентности кешей памяти после барьера памяти и после взаимосвязанных операций
Есть ли разница во времени согласованности (или «сброса») кэшей памяти после операций с блокировкой и после вызова барьеров памяти? Давайте рассмотрим на C # - используя любые операции Interlocked vs Thread.MemoryBarrier () - идентично ли...
71 просмотров

Общее перечисление между несколькими потоками
У меня есть перечисление, которое используется несколькими потоками: public enum Action { Read, Write, None } Внутри класса у меня есть переменная типа Action: public Action _action; Это общая переменная, то есть она...
1000 просмотров

С# - блокировка приращения в списке лайков словаря
Я знаю, что у int не будет фиксированной позиции в памяти, поэтому он просто не может так работать. Но одна и та же часть кода будет выполняться одновременно с разными именами, параметрами и т.д. Мне нужно по существу передать строку «Имя», а...
968 просмотров

Самый быстрый способ безопасно прочитать содержимое long[], элементы которого изменяются одновременно
Когда у вас есть long[] myArray = new long[256]; чьи элементы изменяются несколькими потоками с использованием Interlocked.Increment(ref myArray[x]) точно невозможно получить моментальный снимок myArray в какой-то момент времени,...
112 просмотров
schedule 18.10.2022

Следует ли использовать InterlockedExchange для всех настроек переменной?
Я использую InterlockedExchange в Windows, и у меня есть два вопроса, которые вместе составляют мой главный вопрос. InterlockedExchange использует тип LONG (32 бита). Согласно документации Microsoft Доступ к заблокированным переменным : простые...
76 просмотров

Зачем объявлять переменную как изменчивую и одновременно использовать для нее Interlocked?
Я читаю Параллельное программирование в Windows Джо Даффи. В конце главы «Модели памяти и свобода блокировки» он приводит пример стека без блокировки. Я просмотрел код и одного не понимаю, это необходимость пометки поля m_next как volatile ....
51 просмотров