Вопросы по теме '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 просмотров
schedule
23.11.2021
Строковые константы и массивы символов в 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 просмотров
schedule
29.10.2021
Атомарное сохранение значения в 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 просмотров
schedule
25.11.2021
Предотвращение появления значений 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 просмотров
schedule
12.09.2021
Представление значений C ++ нетривиально копируемых типов
Текущий проект стандарта C ++ (март 2019 г.) имеет следующий абзац ([basic.types] стр.4) (выделено мной):
Объектное представление объекта типа T - это последовательность из N объектов типа char без знака, принимаемых объектом типа T, где N...
177 просмотров
schedule
21.02.2022
Какие предположения должен делать код о модели памяти ЦП и как такие предположения должны быть задокументированы?
Из того, что я читал, архитектуры процессоров Intel обеспечивают более сильную модель памяти, чем требуется в реализациях .net. Насколько правильно для кода использовать гарантии, предоставляемые процессорами Intel, или в какой степени код должен...
203 просмотров
schedule
01.03.2022
Разница между реализациями атомарного decref
Я изучал реализации атомарного подсчета ссылок.
Большинство операций очень согласуются между библиотеками, но я обнаружил удивительное разнообразие в операции "уменьшить количество ссылок". (Обратите внимание, что, как правило, единственная...
149 просмотров
schedule
27.02.2022
Допускает ли правильно синхронизированная программа гонку данных? (Часть I)
Из JLS можно сделать два вывода:
C1: Если в программе нет гонок за данные, то все ее выполнения будут последовательно согласованными: data-race-free => sequentially consistent
C2: Если программа правильно синхронизирована, то все...
492 просмотров
schedule
12.03.2022
Использование сетевого ввода-вывода для обеспечения синхронизации между потоками в C++
Можно ли полагаться на внешний ввод-вывод как на форму межпоточной синхронизации?
Чтобы быть конкретным, рассмотрите приведенный ниже псевдокод, который предполагает существование функций сети/сокета:
int a; // Globally accessible...
171 просмотров
schedule
13.03.2022
Барьеры памяти и спин-блокировка ядра Linux на TILE-Gx
В реализации спин-блокировки ядра Linux для архитектуры TILE-Gx похоже, что они не создают никаких барьеров памяти при блокировке (только при разблокировке):
https://github.com/torvalds/linux/blob/master/arch/tile/include/asm/spinlock_64.h...
1119 просмотров
schedule
31.03.2022
Можно ли объединить атомные нагрузки в модель памяти C ++?
Рассмотрим фрагмент кода C ++ 11 ниже. Для GCC и clang это компилируется в две (последовательно согласованные) загрузки foo. (Примечание редактора: компиляторы не оптимизируют атомики, см. этот вопрос и ответ для более подробные сведения,...
530 просмотров
schedule
30.03.2022
Чем отличаются 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 просмотров
schedule
07.05.2022