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

Ограждение памяти на уровне компилятора и аппаратном уровне
Я читал о ограждении памяти здесь ... И мне нужно немного разъяснение по этому поводу asm volatile ("" : : : "память") Это обеспечивает ограждение памяти на уровне компилятора, и процессор все еще может выполнять переупорядочение, когда...
1991 просмотров
schedule 15.05.2024

Барьеры памяти ядра Linux
Я новичок в программировании ядра Linux. Меня смущает документация по барьерам памяти в ГАРАНТИЯХ глава. Перекрывающиеся загрузки и сохранения внутри конкретного ЦП будут казаться упорядоченными внутри этого ЦП. *X = c; d = *X;...
739 просмотров
schedule 19.01.2024

Правильно ли реализован этот барьер памяти?
Я читаю устаревший код C++, где барьер памяти определяется, как показано ниже. Основные ОС — linux и vxworks. Компиляторы gcc (gcc WindRiver). #if((KCompilerGNU)||(kCompilerWindRiver)) #define MEMORY_BARRIER __asm__ volatile("nop\n");...
766 просмотров
schedule 04.10.2023

Устанавливает ли .awaitTermination() действие, выполненное в исполнителе?
Вопрос, который у меня был в течение многих лет: в этом псевдокоде ExecutorService svc = Executors.newFixedThreadPool(3); svc.submit(new Runnable() { /* code A */ }); svc.shutdown(); if(svc.awaitTermination(...)) { // code B...
374 просмотров

Thread.MemoryBarrier () и другие возможности ограничения памяти в DNX Core 5.0
Насколько я понимаю эти уловки, возможность создания полного барьера памяти с полным забором более важна в DNX, чем в стандартной платформе .Net: - DNX может работать на IA64, у которого модель памяти более слабая, чем x86 / x64 . - Microsoft CLR...
419 просмотров
schedule 20.07.2022

Могут ли атомщики страдать от ложных запасов?
В С++ могут ли атомы страдать от ложных хранилищ? Например, предположим, что m и n являются атомарными и что m = 5 изначально. В теме 1, m += 2; В треде 2, n = m; Результат: окончательное значение n должно быть...
2084 просмотров

Что противоположно полному барьеру памяти?
Иногда я встречаю термин «полный барьер памяти», используемый в руководствах по упорядочению памяти, который, как мне кажется, означает следующее: Если у нас есть следующие инструкции: instruction 1 full_memory_barrier instruction 2 Тогда...
712 просмотров

Всегда ли память вне каждого ядра концептуально плоская / однородная / синхронная в многопроцессорной системе?
Многопроцессорные системы выполняют «настоящие» операции с памятью (те, которые влияют на окончательное выполнение, а не только на спекулятивное выполнение) не по порядку и асинхронно, так как ожидание глобальной синхронизации глобального состояния...
190 просмотров

Можно ли использовать расслабленный порядок памяти для наблюдения за состоянием?
std::atomic<bool> b; void f() { // block A if(b.load(std::memory_order_relaxed)) { // block B } // block C } void g() { // block B b.store(true, std::memory_order_release); } Теоретически блок B должен...
319 просмотров

Зачем нужен барьер DMB, даже если d-cache отключен
Я читал исходный код ядра (версия 5.9) и у меня возник вопрос в $(kernel_root)/arch/arm64/kernel/head.S. Есть функция SYM_FUNC_START_LOCAL(__create_page_tables) и несколько кодов: adr_l x6, vabits_actual str x5, [x6] dmb sy dc ivac,...
74 просмотров
schedule 09.04.2024

Забор в классах - один писатель, несколько читателей
есть еще одна путаница с блокировкой в ​​С#. Проблема заключается в совместном использовании состояния между разными потоками. Следующий сценарий: Поток обрабатывает конечный автомат. Эта машина, например, подсчитывает значение с задержкой....
56 просмотров