Вопросы по теме 'memory-barriers'
Как _ReadWriteBarrier распространяется вверх по дереву вызовов?
Я просматриваю этот фрагмент текста в документации для встроенного _ReadWriteBarrier Visual C++:
В прошлых версиях компилятора Visual C++ функции _ReadWriteBarrier и _WriteBarrier применялись только локально и не влияли на функции выше по...
1154 просмотров
schedule
08.04.2023
Компилятор переупорядочивает границы мьютекса?
Предположим, у меня есть собственные невстроенные функции LockMutex и UnlockMutex, которые используют какой-то правильный мьютекс, например boost, внутри. Как компилятор узнает, что не следует изменять порядок других операций в отношении вызовов...
1745 просмотров
schedule
14.07.2023
Заборы в C ++ 0x, гарантии только на атомику или память в целом
В C ++ 0x draft есть понятие ограждений, которые кажется очень отличным от понятия ограждений на уровне процессора / микросхемы или того, что ребята из ядра Linux ожидают от ограждений . Вопрос в том, действительно ли проект подразумевает крайне...
2428 просмотров
schedule
11.01.2024
Попытка понять связь между Thread.MemoryBarrier() и переключением контекста
Поскольку кажется, что переключение контекста может произойти в любой момент выполнения инструкций, мне теперь интересно, почему код «в рассматриваемой части» (эти две инструкции) имеет смысл, если переключение контекста может произойти между любыми...
541 просмотров
schedule
27.09.2022
Неисправное выполнение и ограждения памяти
Я знаю, что современные процессоры могут работать не по порядку, однако они всегда удаляют результаты по порядку, как описано в Википедии.
«Вне очереди процессоры заполняют эти« слоты »вовремя другими готовыми инструкциями, затем переупорядочивают...
3339 просмотров
schedule
24.12.2022
Обеспечивает ли _ReadWriteBarrier видимость динамически распределяемых буферов между потоками?
Я использую Visual C++ и Windows 7 и XP. У меня есть два потока в программе, где после создания обоих один поток динамически создает буфер и присваивает его адрес глобальному указателю, а затем записывает данные в этот буфер. Будет ли вызов...
512 просмотров
schedule
30.06.2023
Каковы примеры барьеров памяти в C++?
Я вижу, что блокировка мьютексов С++ 11 не void lock() volatile . Как компилятор узнает, какие функции являются барьерами памяти, а какие нет? Все ли функции являются барьерами, даже если они не изменчивы? Какие менее известные барьеры памяти и...
797 просмотров
schedule
28.04.2023
Требуются ли барьеры памяти при присоединении к потоку?
Если поток A порождает другой поток B с единственной целью записи в переменную V, а затем ждет его завершения, требуются ли барьеры памяти, чтобы гарантировать, что последующие чтения V в потоке A будут свежими? Я не уверен, есть ли какие-либо...
759 просмотров
schedule
04.03.2022
Как написать барьер памяти для DSP TMS320F2812?
Я просмотрел руководство пользователя компилятора TI C/C++ v6.1 ( spru514e ), но ничего не нашел.
Оператор asm , кажется, ничего не дает в этом отношении, руководство даже предостерегает от изменения значений переменных (p132). Расширение GNU для...
942 просмотров
schedule
13.06.2022
когерентность кэша защищенных блокировкой данных
Данные потоки TA и TB, конкурирующие в f() ниже:
struct C {
C(): a(0) {}
int a;
std::mutex mtx;
void f() {
... // use 'a' in readonly mode
std::lock_guard<std::mutex> lock(mtx); // assume TA gets the lock first, then TB
a...
241 просмотров
schedule
10.08.2022
Spinlock.exit с барьером памяти или без него
Поскольку барьеры памяти являются для меня новой концепцией, я пытаюсь разобраться с ними, поэтому я написал следующую тестовую программу (C#):
private static void Func1()
{
SpinLock sl = new SpinLock();
Action action = () =>
{...
440 просмотров
schedule
04.04.2022
C # / CLR: MemoryBarrier и разорванное чтение
Просто поигрался с параллелизмом в свободное время и хотел попытаться предотвратить разорванные чтения без использования блокировок на стороне считывателя, чтобы одновременные считыватели не мешали друг другу.
Идея состоит в том, чтобы...
376 просмотров
schedule
23.05.2023
Определение места для использования заграждений (заборов)
Инструкции x86 lfence / sfence / mfence используются для реализации механизмов rmb () / wmb () / mb () в ядре Linux. Легко понять, что они используются для сериализации обращений к памяти. Однако гораздо сложнее определить, когда и где их...
167 просмотров
schedule
12.04.2022
Инструкция
У меня есть вопрос о переупорядочивании юридических инструкций в C#/.NET.
Начнем с этого примера. У нас есть этот метод, определенный в каком-то классе, где _a, _b и _c — поля.
int _a;
int _b;
int _c;
void Foo()
{
_a = 1; // Write 1
_b =...
1287 просмотров
schedule
06.02.2023
Стек с блокировкой вращения и барьеры памяти (C ++)
У меня есть блокировка вращения реализации:
class Spinlock {
public:
void Lock() {
while (true) {
if (!_lock.test_and_set(std::memory_order_acquire)) {
return;
}
}
}
void...
166 просмотров
schedule
20.02.2022
Наименьшее ограничение в памяти для спин-блокировки с двумя атомами
У меня есть рабочие потоки, выполняющие критичную по времени обработку с регулярными интервалами (примерно 1 кГц). В каждом цикле рабочих будят для выполнения работы, каждая из которых должна (в среднем) завершаться до начала следующего цикла. Они...
768 просмотров
schedule
01.06.2023
Освобождать буфер после чтения из вычислительного шейдера GL
У меня есть реализация Marching Cubes на графическом процессоре, которая использует последовательность из 6 вычислительных шейдеров GL, при этом каждое чтение из буферов, записанных предыдущими шейдерами, после соответствующих барьеров памяти....
205 просмотров
schedule
17.06.2022
Переупорядочивание GCC при загрузке с помощью `memory_order_seq_cst`. Это разрешено?
Используя упрощенную версию базовой seqlock , gcc переупорядочивает неатомарную загрузку через атомарный load(memory_order_seq_cst) при компиляции код с -O3 . Такое переупорядочение не наблюдается при компиляции с другими уровнями оптимизации...
246 просмотров
schedule
22.03.2022
Запись в аппаратные регистры через /dev/mem требует дополнительной записи
Запись в аппаратные регистры через /dev/mem требует дополнительной записи
Я хочу записать в некоторые аппаратные регистры, используя /dev/mem в Linux. Целевая плата — ZYBO (Zynq, ARM Cortex-A9), а аппаратное обеспечение — AXI4 Lite Slave с 4...
1685 просмотров
schedule
08.04.2023
Есть ли какой-либо барьер компилятора, равный asm(:::memory) в С++ 11?
Мой тестовый код показан ниже, и я обнаружил, что только memory_order_seq_cst запрещает переупорядочивать компилятор.
#include <atomic>
using namespace std;
int A, B = 1;
void func(void) {
A = B + 1;...
1759 просмотров
schedule
03.02.2023