Вопросы по теме 'memory-model'
Барьеры памяти и большие структуры?
Допустим, у меня есть структура, состоящая из 100 байтов. Какие гарантии у меня есть по поводу следующего кода?
m_myLargeStruct = someValue; // copying 100 bytes
Thread.MemoryBarrier();
// Executed by another thread, after "Thread.MemoryBarrier"...
514 просмотров
schedule
24.05.2022
Использование барьеров памяти
В следующем примере кода требуется ли барьер памяти в FuncA для обеспечения чтения самого последнего значения?
class Foo
{
DateTime m_bar;
void FuncA() // invoked by thread X
{
Thread.MemoryBarrier(); // is required?...
548 просмотров
schedule
26.06.2023
Вставка инструкций Fence с помощью JVM/JIT
Модель памяти Java дает гарантию DRF (свобода гонки данных), что означает, что программа, свободная от гонки данных, при выполнении в модели расслабленной памяти Java будет давать то же поведение, что и при последовательном последовательном...
741 просмотров
schedule
04.03.2022
Создает ли std::mutex забор?
Если я заблокирую std::mutex , всегда ли я буду получать ограничение памяти? Я не уверен, подразумевает ли это или заставляет вас получить забор.
Обновлять:
Нашел эту ссылку после комментариев RMF.
Многопоточное программирование и...
5099 просмотров
schedule
14.05.2022
Ограничение памяти для микропроцессоров x86
Недавно я начал с курса по компьютерной архитектуре на интернет-ресурсе. Я прочитал из одной из книг, которую взял, что процессоры x86 имеют 32 адресные строки и могут читать данные по шине данных по 4 байта за раз. Теперь я понимаю, что 32 адресные...
413 просмотров
schedule
22.03.2022
Нужна помощь в понимании Boost.Atomic модели памяти `memory_order_release` Пример
Я просматривал документацию по boost Atomic и наткнулся на следующий пример:
atomic<int> a(0);
thread1:
... /* A */
a.fetch_add(1, memory_order_release);
thread2:
int tmp = a.load(memory_order_acquire);
if (tmp == 1)
{
......
996 просмотров
schedule
21.03.2022
pthread_create(3) и гарантия синхронизации памяти в SMP-архитектуре
Я просматриваю раздел 4.11 документа Основных спецификаций Open Group, выпуск 7 (IEEE Std 1003.1, 2013 Edition), раздел 4.11 документа, в котором изложены правила синхронизации памяти. Это наиболее конкретный стандарт POSIX, который мне удалось...
1313 просмотров
schedule
01.02.2022
Зачем нужен лимит порядка памяти на счетчике ссылок?
В примере boost::atomic функция unref :
void intrusive_ptr_release(const X * x)
{
if (x->refcount_.fetch_sub(1, boost::memory_order_release) == 1) {
boost::atomic_thread_fence(boost::memory_order_acquire);
delete x;
}
}
1:...
231 просмотров
schedule
28.05.2022
последовательность до модификации порядка согласованности
с http://en.cppreference.com :
Ослабленное упорядочение Атомарные операции с тегами std :: memory_order_relaxed не являются операциями синхронизации, они не упорядочивают память. Они гарантируют только атомарность и согласованность порядка...
313 просмотров
schedule
24.02.2024
VB.NET: нужно ли мне вызывать Thread.MemoryBarrier() перед каждым чтением, если я всегда завершаю запись с помощью Thread.MemoryBarrier()?
VB.Net не имеет эквивалента ключевого слова C# volatile, поэтому вам нужно вручную реализовать volatile, что обычно делается путем вызова Thread.MemoryBarrier() перед чтением и после записи. Так что что-то вроде этого эквивалентно объявлению volatile...
325 просмотров
schedule
18.11.2023
Определяет ли POSIX модель согласованности памяти (адресация многопоточности)?
Определяет ли POSIX модель согласованности памяти для своего многопоточного интерфейса (семафоры и потоки)? Я говорю не об атомарных примитивах, а о псевдоформальной спецификации видимости побочных эффектов в том смысле, что C11 указывает происходит...
28 просмотров
schedule
10.09.2023
Внеочередное выполнение и переупорядочивание: можно ли увидеть, что после барьера до барьера?
Согласно Википедии: Барьер памяти, также известный как инструкция membar, memory guard или filter, представляет собой тип барьерной инструкции, которая заставляет центральный процессор (ЦП) или компилятор применять ограничение порядка операций с...
867 просмотров
schedule
15.06.2023
Разница между memory_order_consume и memory_order_acquire
У меня есть вопрос относительно статьи GCC-Wiki . Под заголовком Общая сводка приведен следующий пример кода:
Тема 1:
y.store (20);
x.store (10);
Тема 2:
if (x.load() == 10) {
assert (y.load() == 20)
y.store (10)
}
Говорят, что...
2347 просмотров
schedule
14.10.2022
Что происходит до того, как это означает в спецификации С++ 11?
Я пытаюсь понять значение происходит раньше в спецификации C++11 и, в частности, предполагает ли спецификация какое-либо неформальное понимание термина в дополнение к тому, что указано. Я работаю с проекта N3290.
Прямым аргументом в пользу того,...
263 просмотров
schedule
22.08.2023
Модель памяти с ++: синхронизируются ли загрузки seq_cst с хранилищами seq_cst?
В модели памяти C ++ существует общий порядок всех загрузок и сохранений всех последовательно согласованных операций. Мне интересно, как это взаимодействует с операциями, которые имеют другой порядок памяти, который упорядочен до / после...
309 просмотров
schedule
29.01.2023
Обеспечивают ли заблокированные инструкции барьер между слабоупорядоченными доступами?
В x86 инструкции с префиксом lock , такие как lock cmpxchg , обеспечивают семантику барьера в дополнение к своей атомарной операции: для нормального доступа к памяти в областях памяти с обратной записью операции чтения и записи не...
555 просмотров
schedule
01.02.2024
Есть ли у нас гарантия, что любая атомарная запись немедленно сохранит новое значение атомарной переменной в основной памяти?
Итак, я много читал о переупорядочении инструкций и памяти и о том, как мы можем это предотвратить, но у меня до сих пор нет ответа на один вопрос (вероятно, потому, что я недостаточно внимателен). Мой вопрос: есть ли у нас гарантия, что любая...
171 просмотров
schedule
23.03.2024