Вопросы по теме '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 просмотров
schedule
04.03.2024
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 просмотров
schedule
05.02.2024
Что противоположно полному барьеру памяти?
Иногда я встречаю термин «полный барьер памяти», используемый в руководствах по упорядочению памяти, который, как мне кажется, означает следующее:
Если у нас есть следующие инструкции:
instruction 1
full_memory_barrier
instruction 2
Тогда...
712 просмотров
schedule
11.04.2024
Всегда ли память вне каждого ядра концептуально плоская / однородная / синхронная в многопроцессорной системе?
Многопроцессорные системы выполняют «настоящие» операции с памятью (те, которые влияют на окончательное выполнение, а не только на спекулятивное выполнение) не по порядку и асинхронно, так как ожидание глобальной синхронизации глобального состояния...
190 просмотров
schedule
08.12.2023
Можно ли использовать расслабленный порядок памяти для наблюдения за состоянием?
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 просмотров
schedule
19.07.2022
Зачем нужен барьер 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 просмотров
schedule
01.02.2024