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

По вопросам моделей упорядочения памяти на уровне языка программирования (выше уровня ISA или машинного языка).
2

Реализация Thread.VolatileRead

Я рассматриваю реализацию методов VolatileRead/VolatileWrite (используя Reflector), и я озадачен чем-то. Это реализация для VolatileRead: [MethodImpl(MethodImplOptions.NoInlining)] public static int VolatileRead(ref int address) { int num = add...
20 нояб. '09 в 22:43
6

Может ли современное оборудование x86 не хранить один байт в памяти?

Говоря о модели памяти С++ для concurrency, язык программирования Stroustrup С++, 4-е изд., раздел. 41.2.1, говорит: ... (как и большинство современных аппаратных средств), машина не могла загружать или хранить что-либо меньшее, чем слово. Однак...
13 окт. '17 в 1:09
2

Модель памяти С++ 0x и спекулятивные нагрузки/хранилища

Итак, я читал о модели памяти, которая является частью предстоящего стандарта С++ 0x. Тем не менее, я немного смущен некоторыми ограничениями для того, что разрешено компилятором, в частности, о спекулятивных нагрузках и хранилищах. Для начала, неко...
04 янв. '10 в 20:14
1

С++ 11 memory_order_acquire и memory_order_release семантика?

http://en.cppreference.com/w/cpp/atomic/memory_order и другие онлайн-ссылки С++ 11, определите memory_order_acquire и memory_order_release как: Операция получения: no reads в текущем потоке может быть переупорядочена перед этой загрузкой. Опера...
23 апр. '13 в 22:02
2

python threading: модель памяти и видимость

Потоки python раскрывают проблемы видимости памяти и переупорядочения операторов, как это делает Java? Поскольку я не могу найти ссылку на "модель памяти Python" или что-то в этом роде, несмотря на то, что многие люди пишут многопоточный код Python, ...
23 авг. '10 в 16:57
2

Каковы гарантии упорядочения памяти С++ 11 в этом случае?

Я пишу какой-то незакрепленный код, и у меня появился интересный образец, но я не уверен, будет ли он вести себя так, как ожидалось, при упорядоченном упорядочении памяти. Самый простой способ объяснить это - пример: std::atomic<int> a, b, c;...
14 авг. '13 в 4:22
2

Где я могу найти хорошую, прочную документацию для примитивов синхронизации С++ 0x?

Я видел статьи на ::std::thread и ::std::forward и такие, но я не видел хороших статей на ::std::atomic. Существует, конечно, стандартная статья, но я не видел никакой хорошей документации для тех, кто просто хотел использовать объект. Есть ли каки...
08 февр. '11 в 20:49
5

Алгоритм Петерсона в Java?

Есть ли пример реализации алгоритма Петерсона для взаимного исключения в Java?
26 мая '10 в 10:06
6

Использует ли Interlocked.CompareExchange барьер памяти?

Я читаю сообщение Джо Даффи о Неустойчивые чтения и записи и своевременность, и я пытаюсь понять что-то о последнем коде образец в сообщении: while (Interlocked.CompareExchange(ref m_state, 1, 0) != 0) ; m_state = 0; while (Interlocked.CompareExchan...
17 окт. '09 в 8:15
2

Можно ли объединить атомные нагрузки в модели памяти С++?

Рассмотрим приведенный ниже фрагмент С++ 11. Для GCC и clang это компилируется в две (последовательно согласованные) нагрузки foo. Модель модели С++ позволяет компилятору объединить эти две нагрузки в одну нагрузку и использовать одно и то же значени...
14 окт. '15 в 14:22
1

С++ 11 и доступ к различным членам одной и той же структуры в разных потоках

Предположим, что у вас есть следующие определения: struct X { char a, b; }; X x; И теперь предположим, что у вас есть два потока, один из которых читает и записывает x.a, но никогда не обращается к x.b, а другой читает и записывает x.b, но ник...
18 авг. '13 в 20:12
2

Приобретать/выпускать семантику с 4 потоками

В настоящее время я читаю C++ "Параллельность в действии" Энтони Уильямса. Один из его списков показывает этот код, и он утверждает, что утверждение, что z != 0 может сработать. #include <atomic> #include <thread> #include <assert.h&g...
22 янв. '18 в 14:31
1

Чем отличаются memory_order_seq_cst и memory_order_acq_rel?

Магазины - это операции выпуска, а нагрузки - операции для обоих. Я знаю, что memory_order_seq_cst предназначен для наложения дополнительного общего порядка для всех операций, но я не могу построить пример, где это не так, если все memory_order_seq_...
09 сент. '12 в 16:26
3

Почему memory_order задан как аргумент runtime для std:: atomic functions

std::atomic функции, такие как store и load, принимают аргумент std::memory_order. Аргумент может быть определен во время выполнения, как и любой другой аргумент функции. Однако фактическое значение может повлиять на оптимизацию кода во время компи...
18 дек. '12 в 20:40
4

Является ли модель памяти Java (JSR-133), что вход в монитор очищает кеш-память процессора?

Есть что-то, что меня пугает с моделью памяти Java (если я все правильно понимаю). Если есть два потока A и B, нет никаких гарантий того, что B когда-либо увидит значение, написанное A, если оба A и B не синхронизируются на одном мониторе. Для любой...
16 июн. '10 в 14:33