Вопросы по теме 'memory-barriers'
Использование барьера памяти в безблокировочных очередях
Недавно я прочитал официальный документ Пола Маккенни за 2010 г., " Барьеры памяти: взгляд на оборудование для программных хакеров " .
Я был бы очень признателен за некоторые отзывы / комментарии / рекомендации относительно небольших разделов кода...
1463 просмотров
schedule
27.11.2021
какова цель барьера компилятора?
Следующее извлечено из Параллельное программирование в Windows , Глава 10 Страница 528 ~ 529, шаблон c ++ Реализация двойной проверки
T getValue(){
if (!m_pValue){
EnterCriticalSection(&m_crst);
if (! m_pValue){...
3945 просмотров
schedule
10.11.2021
Последовательно ли согласован std :: mutex?
Скажем, у меня есть два потока A и B , записывающих в глобальные логические переменные fA и fB соответственно, которые изначально установлены на false и защищены std::mutex объектами mA и mB соответственно:
// Thread A
mA.lock();...
1868 просмотров
schedule
19.10.2021
Семантика получения / выпуска с 4 потоками
В настоящее время я читаю C ++ Concurrency in Action Энтони Уильямса. В одном из его листинга показан этот код, и он заявляет, что утверждение, что z != 0 может срабатывать.
#include <atomic>
#include <thread>
#include...
1908 просмотров
schedule
25.11.2021
Упорядочивание неатомарных операций посредством использования атомарных операций в качестве основы для средств синхронизации более высокого уровня
Сначала я процитирую описание из книги Энтони Уильямса «Параллелизм в C ++ в действии»:
class spinlock_mutex
{
std::atomic_flag flag;
public:
spinlock_mutex():
flag(ATOMIC_FLAG_INIT)
{}
void lock()
{...
119 просмотров
schedule
20.10.2021
Как функции блокировки и разблокировки мьютекса предотвращают переупорядочение ЦП?
Насколько мне известно, вызов функции действует как барьер компилятора, но не как барьер процессора.
В этом руководстве говорится следующее:
получение блокировки подразумевает семантику получения, в то время как снятие блокировки...
1407 просмотров
schedule
05.11.2021
Предотвращение появления значений Out of Thin Air с барьером памяти в C ++
Давайте рассмотрим следующую двухпотоковую параллельную программу на C ++:
x,y - глобальные, r1,r2 - локальные для потока, store и от load до int - атомарные. Модель памяти = C ++ 11
int x = 0, int y = 0
r1 = x | r2 = y
y = r1 |...
669 просмотров
schedule
14.09.2021
Эффект / заполнение std :: memory_order_ * на x86 (-64)
У меня такой код:
#include <cstdint>
#include <atomic>
void myAtomicStore(std::atomic<int32_t>& i, const int32_t v) {
i.store(v, std::memory_order_release);
}
int myAtomicLoad(std::atomic<int32_t>& i, const...
61 просмотров
schedule
14.11.2021
Простая программа на C для иллюстрации выполнения вне очереди?
Я использую x86, и я хочу практически увидеть ошибку, вызванную некорректным выполнением на моей машине. Я попытался написать один, на основе этой статьи в вики , но я всегда вижу, что «значение x равно 33 ":
#include<stdio.h>...
667 просмотров
schedule
19.11.2021
Какая связь между согласованностью кеша и барьерами памяти?
Насколько мне известно, барьеры памяти используются, чтобы избежать выполнения вне очереди . Тем не менее, барьеры памяти часто упоминаются также, когда говорят о согласованности кеша. Я не уверен, как связаны эти две концепции, поскольку,...
176 просмотров
schedule
18.09.2021
Для чего в Java используются ограждения памяти?
Пытаясь понять, как SubmissionPublisher ( исходный код в Java SE 10, OpenJDK | docs ), новый класс, добавленный в Java SE в версии 9, был реализован, я наткнулся на несколько вызовов API на _ 2_ Раньше я не знал:
fullFence , acquireFence ,...
715 просмотров
schedule
12.09.2021
Могу ли я изменить данные с помощью std :: shared_lock на std :: shared_mutex?
У меня есть несколько буферов, совместно используемых несколькими потоками чтения / записи, и разные писатели изменяют данные по-разному.
Например, Writer1 просто добавляет новые данные, а Writer2 увеличивает размер буфера (перераспределяет память...
67 просмотров
schedule
02.11.2021
Барьер памяти на одноядерном ARM
О барьерах памяти связано много информации. Большая часть информации относится к многоядерным или многопроцессорным архитектурам. Где-то здесь, в Stackoverflow, также говорится, что барьеры памяти не требуются на одноядерных процессорах.
Пока я...
2992 просмотров
schedule
23.02.2022
Какие предположения должен делать код о модели памяти ЦП и как такие предположения должны быть задокументированы?
Из того, что я читал, архитектуры процессоров Intel обеспечивают более сильную модель памяти, чем требуется в реализациях .net. Насколько правильно для кода использовать гарантии, предоставляемые процессорами Intel, или в какой степени код должен...
203 просмотров
schedule
01.03.2022
Всегда ли для спин-блокировок требуется барьер памяти? Дорогое вращение на барьере памяти?
Я написал код без блокировки, который отлично работает с локальным чтением в большинстве условий.
Обязательно ли локальное вращение при чтении памяти означает, что я должен ВСЕГДА вставлять барьер памяти перед вращением чтения?
(Чтобы проверить...
4731 просмотров
schedule
15.03.2022
Достаточно ли std::memory_order_relaxed для проверки доступности?
У меня есть параллельный объект, который может или может содержать указатель на функцию каждый раз. Схема объекта выглядит так:
struct ConcurrentObject{
//variables
std::atomic<void(*)()> callback;
}
поэтому один поток может...
213 просмотров
schedule
12.03.2022
Переключение контекста и выполнение потоков на разных ядрах ЦП
Из моего другого вопроса о SO я узнал, что возможно, что следующий простой метод
void B()
{
if (_complete)
{
Console.WriteLine (_answer);
}
}
может выполняться на разных процессорах, если переключение контекста...
911 просмотров
schedule
26.03.2022
Барьеры памяти и спин-блокировка ядра Linux на TILE-Gx
В реализации спин-блокировки ядра Linux для архитектуры TILE-Gx похоже, что они не создают никаких барьеров памяти при блокировке (только при разблокировке):
https://github.com/torvalds/linux/blob/master/arch/tile/include/asm/spinlock_64.h...
1119 просмотров
schedule
31.03.2022
Неустойчивые операции чтения / записи и упорядочение потоков.
Я пытаюсь обдумать тонкости, связанные с барьерами памяти и изменчивыми операциями чтения / записи. Я читаю здесь статью Джозефа Альбахари:
http://www.albahari.com/threading/part4.aspx
И спотыкаясь о том, когда нужен барьер памяти перед...
425 просмотров
schedule
28.03.2022
Что означает операция сериализации в документации sfence?
В документации для sfence говорится:
Выполняет операцию сериализации для всех инструкций сохранения в памяти, которые были выполнены до инструкции SFENCE.
Что означает «операция сериализации»?
Означает ли это, что убедитесь, что...
1298 просмотров
schedule
05.04.2022