Вопросы по теме 'memory-model'

Различия между моделями памяти x86 / x64 / ia64 в .NET
Я ищу справку о различиях между моделями памяти, используемыми .NET CLR / JIT на x86 / x64 / ia64. Я знаю, что между x86 и ia64 есть некоторые различия (переупорядочение инструкций, удаление инструкций и т. Д.), Но я не нашел справки о различиях...
2729 просмотров
schedule 23.09.2021

Подразумевает ли модель памяти Java (JSR-133), что вход в монитор очищает кэш данных ЦП?
Есть кое-что, что меня беспокоит с моделью памяти Java (если я вообще все правильно понимаю). Если есть два потока A и B, нет никаких гарантий, что B когда-либо увидит значение, записанное A, если только A и B не синхронизируются на одном мониторе....
1191 просмотров

Строковые константы и массивы символов в C
Возможный дубликат: В чем разница между char s [] и char * s в C? Это скорее общий вопрос, чем попытка что-то исправить, я читал книгу по языку программирования C, и они стараются провести различие между char amessage[] = "blah";...
6122 просмотров
schedule 16.09.2021

Пример правильно синхронизированной программы с гонками данных в модели памяти Java
В JLS, §17.4.5. "Случается перед заказом" , в нем говорится, что Программа правильно синхронизируется тогда и только тогда, когда все последовательно согласованные исполнения свободны от гонок данных. Согласно обсуждению в Есть ли...
624 просмотров
schedule 29.11.2021

Освободить / получить семантику по std :: mutex
Я читаю модель памяти C ++, определенную в n3485, и в ней говорится о семантике выпуска / получения, которая, насколько я понимаю, а также из определений приведено в этом блоге : Получить семантику - это свойство, которое может применяться...
2182 просмотров
schedule 25.09.2021

Java - требуется ли volatile с синхронизированным?
По следующему простому сценарию: class A { int x; Object lock; ... public void method(){ synchronized(lock){ // modify/read x and act upon its value } } } Должен ли x быть изменчивым? Я знаю, что synchronized...
1000 просмотров

Атомарное сохранение значения в uint8_t (C)
Предположим, у нас есть структура C, содержащая поле uint8_t: typedef struct foo_s { uint8_t field; // other fields... } foo_t; Если мы хотим атомарно сохранить значение в field с использованием определенного порядка памяти, каковы...
737 просмотров
schedule 05.09.2021

Семантика получения / выпуска с 4 потоками
В настоящее время я читаю C ++ Concurrency in Action Энтони Уильямса. В одном из его листинга показан этот код, и он заявляет, что утверждение, что z != 0 может срабатывать. #include <atomic> #include <thread> #include...
1908 просмотров

Предотвращение появления значений Out of Thin Air с барьером памяти в C ++
Давайте рассмотрим следующую двухпотоковую параллельную программу на C ++: x,y - глобальные, r1,r2 - локальные для потока, store и от load до int - атомарные. Модель памяти = C ++ 11 int x = 0, int y = 0 r1 = x | r2 = y y = r1 |...
669 просмотров
schedule 14.09.2021

Для чего в Java используются ограждения памяти?
Пытаясь понять, как SubmissionPublisher ( исходный код в Java SE 10, OpenJDK | docs ), новый класс, добавленный в Java SE в версии 9, был реализован, я наткнулся на несколько вызовов API на _ 2_ Раньше я не знал: fullFence , acquireFence ,...
715 просмотров

Представление значений C ++ нетривиально копируемых типов
Текущий проект стандарта C ++ (март 2019 г.) имеет следующий абзац ([basic.types] стр.4) (выделено мной): Объектное представление объекта типа T - это последовательность из N объектов типа char без знака, принимаемых объектом типа T, где N...
177 просмотров
schedule 21.02.2022

Какие предположения должен делать код о модели памяти ЦП и как такие предположения должны быть задокументированы?
Из того, что я читал, архитектуры процессоров Intel обеспечивают более сильную модель памяти, чем требуется в реализациях .net. Насколько правильно для кода использовать гарантии, предоставляемые процессорами Intel, или в какой степени код должен...
203 просмотров

Разница между реализациями атомарного decref
Я изучал реализации атомарного подсчета ссылок. Большинство операций очень согласуются между библиотеками, но я обнаружил удивительное разнообразие в операции "уменьшить количество ссылок". (Обратите внимание, что, как правило, единственная...
149 просмотров

Допускает ли правильно синхронизированная программа гонку данных? (Часть I)
Из JLS можно сделать два вывода: C1: Если в программе нет гонок за данные, то все ее выполнения будут последовательно согласованными: data-race-free => sequentially consistent C2: Если программа правильно синхронизирована, то все...
492 просмотров
schedule 12.03.2022

Использование сетевого ввода-вывода для обеспечения синхронизации между потоками в C++
Можно ли полагаться на внешний ввод-вывод как на форму межпоточной синхронизации? Чтобы быть конкретным, рассмотрите приведенный ниже псевдокод, который предполагает существование функций сети/сокета: int a; // Globally accessible...
171 просмотров

Барьеры памяти и спин-блокировка ядра Linux на TILE-Gx
В реализации спин-блокировки ядра Linux для архитектуры TILE-Gx похоже, что они не создают никаких барьеров памяти при блокировке (только при разблокировке): https://github.com/torvalds/linux/blob/master/arch/tile/include/asm/spinlock_64.h...
1119 просмотров

Можно ли объединить атомные нагрузки в модель памяти C ++?
Рассмотрим фрагмент кода C ++ 11 ниже. Для GCC и clang это компилируется в две (последовательно согласованные) загрузки foo. (Примечание редактора: компиляторы не оптимизируют атомики, см. этот вопрос и ответ для более подробные сведения,...
530 просмотров

Чем отличаются memory_order_seq_cst и memory_order_acq_rel?
Магазины являются операциями выпуска, а загрузки - операциями получения для обоих. Я знаю, что memory_order_seq_cst предназначен для наложения дополнительного общего порядка для всех операций, но мне не удается построить пример, в котором это не...
10812 просмотров
schedule 10.04.2022

Есть ли в C ++ неявные барьеры памяти?
В следующем коде используется атомика, необходимая для гарантии семантики без гонок на всех платформах, или использование обещания. Set_value / future.wait подразумевает некий неявный барьер памяти, который позволил бы мне полагаться на запись флага...
517 просмотров
schedule 08.04.2022

Расслабленная атомика и когерентность памяти при отсутствии синхронизации
Я написал базовый планировщик графов, который синхронизирует выполнение задач без ожидания. Поскольку топология графа неизменна, я решил сделать все атомарные операции упрощенными. Однако, когда я узнал больше об аппаратном обеспечении ЦП, я начал...
50 просмотров