Вопросы по теме 'stdatomic'

Когда мне действительно нужно использовать atomic‹bool› вместо bool?
Разве atomic<bool> не является избыточным, потому что bool является атомарным по своей природе? Я не думаю, что возможно иметь частично измененное логическое значение. Когда мне действительно нужно использовать atomic<bool> вместо...
71458 просмотров
schedule 08.04.2022

С++ 11 неопределенная ссылка на __atomic_store_16
Следующий код не может связать: #include <atomic> struct A { unsigned long a;...
6288 просмотров
schedule 21.04.2022

С++ std::atomic union
Как сделать объединение атомарным с помощью std::atomic? Или вместо этого я должен объявить членов союза атомарными? typedef union { int integer; float flt; double dbl; int *intArray; float *floatArray; unsigned char...
1071 просмотров
schedule 17.02.2023

Проблема с использованием std::atomic_flag с рабочим потоком
извините за многословие - я сделал все возможное, чтобы сжать пример кода в минимально функциональный класс и метод main() . Я пытаюсь использовать atomic_flag , чтобы уведомить _rx() в моем рабочем потоке о выходе, когда вызывается stop() ....
804 просмотров
schedule 25.02.2023

Прочитать переменную в другом потоке
Я использую Linux, и у меня есть две переменные, которые читаются/записываются в другом потоке. Время от времени (100 мс) ThreadB считывает состояние переменных и что-то делает. Это в основном while(1){ dosomething(); usleep(); } . Я беспокоюсь,...
711 просмотров
schedule 20.02.2024

Потокобезопасность коллекции atomic int
У меня есть следующий класс, обертывающий вектор атомных целых чисел ( std::vector< std::atomic_int > ) Вектор имеет правильный размер при построении объекта и не меняет размер. Есть обычные аксессоры и мутаторы для получения, установки...
259 просмотров
schedule 09.10.2022

Нужно ли использовать std::atomic_ при наличии одного потока чтения и одного потока записи
Я хочу использовать std::shared_ptr в сценарии чтения/записи. Один поток постоянно получает новую информацию и хранит интеллектуальный указатель на последние данные. Когда приходит время запустить мой медленный расчет, я беру интеллектуальный...
76 просмотров

Как сделать так, чтобы хранилища памяти в одном потоке быстро отображались в других потоках?
Предположим, я хочу скопировать содержимое регистра устройства в переменную, которую будут читать несколько потоков. Есть ли хороший общий способ сделать это? Вот примеры двух возможных способов сделать это: #include <atomic> volatile int...
1114 просмотров
schedule 16.07.2023

Почему работает этот `std :: atomic_thread_fence`
Во-первых, я хочу перечислить некоторые из моих обязательств по этому поводу, поправьте меня, если я ошибаюсь. MFENCE в x86 может обеспечить полный барьер Последовательная согласованность предотвращает переупорядочивание STORE-STORE,...
1057 просмотров
schedule 05.08.2022

Два разных процесса с двумя переменными std :: atomic на одном адресе?
Я прочитал стандарт C ++ (n4713) § 32.6.1 3: Операции без блокировок также должны быть безадресными. То есть атомарные операции в одном и том же месте памяти через два разных адреса будут взаимодействовать атомарно. Реализация не должна...
842 просмотров
schedule 23.07.2023

атомарное хранилище нагрузки с порядком памяти
Сначала поток A запускает x.store(1, std::memory_order_release) , затем поток B запускает x.load(std::memory_order_acquire) . x в потоке B не гарантируется чтение 1, сохраненного A. Если я использую memory_order_seq_cst , будет ли он...
231 просмотров

Занятый опрос std::atomic - msvc оптимизирует петлю - почему и как предотвратить?
Я пытаюсь реализовать простую функцию цикла занятости. Это должно продолжать опрашивать переменную std::atomic максимальное количество раз (spinCount) и возвращать true, если статус действительно изменился (на что-либо, кроме NOT_AVAILABLE) в...
129 просмотров

Распространение / видимость атомарных операций (атомная нагрузка против атомной нагрузки RMW)
Контекст Я пишу потокобезопасную библиотеку protothread / coroutine на C ++, и я использую атомики для выполнения задачи переключение без блокировки. Я хочу, чтобы он был максимально производительным. У меня есть общее представление об...
749 просмотров

Инициализация atomic_flag
У меня есть struct , назовем его struct foo , к которому я хотел бы добавить переменную atomic_flag . До сих пор я calloc изменял структуру, учитывая, что в основном она должна быть инициализирована нулем. Как мне инициализировать элемент...
182 просмотров
schedule 29.06.2023

Почему стандартные библиотеки не реализуют std::atomic для структур менее 8 байт без блокировки?
Предполагая, что архитектура может поддерживать 8-байтовые скаляры без блокировки для std::atomic. Почему стандартные библиотеки не предоставляют аналогичные специализации для структур размером менее 8 байт? Простая реализация такой специализации...
254 просмотров
schedule 19.07.2023

Какие операции с атомарной переменной c ++ 11 на самом деле атомарны?
Я читаю справочное руководство cpp по std :: atomic ( https://en.cppreference.com/w/cpp/atomic/atomic ), и я не понимаю, какие именно операции выполняются атомарно. Основные операции, с которыми у меня возникают проблемы: operator =, operator + и...
990 просмотров
schedule 31.12.2022

std :: atomic ‹int› memory_order_relaxed VS volatile sig_atomic_t в многопоточной программе
volatile sig_atomic_t дает ли какие-либо гарантии порядка памяти? Например. если мне нужно просто загрузить / сохранить целое число, можно ли его использовать? Например. здесь: volatile sig_atomic_t x = 0; ... void f() { std::thread...
408 просмотров

Как выразить в С++ 11 обычные хранилища (экспорт) и загрузки (импорт) барьеры (заборы)?
В следующем коде реализована некоторая свободная от блокировок (и атомарная!) связь между потоками, которая требует использования барьеров сохранения и загрузки памяти, но семантика освобождения-получения C++11 не подходит и не гарантирует...
238 просмотров

Почему std::atomic‹std::string› выдает банально копируемую ошибку?
Моя программа проста, и я хочу использовать атомарный тип. Это работает с int или double , но не работает с std::string . #include <iostream> #include <atomic> #include <string> int main() { std::atomic<int>...
2150 просмотров

Стоит ли объявлять size_t как std::atomic, если он используется в двух потоках?
У меня есть переменная size_t , которая обновляется std::thread и читается другим std::thread . Я знаю, что могу защитить чтение и запись с помощью мьютекса. Но будет ли это то же самое или будет лучше, если я сделаю size_t как...
282 просмотров
schedule 24.11.2022