Вопросы по теме '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 просмотров
schedule
24.05.2022
Как сделать так, чтобы хранилища памяти в одном потоке быстро отображались в других потоках?
Предположим, я хочу скопировать содержимое регистра устройства в переменную, которую будут читать несколько потоков. Есть ли хороший общий способ сделать это? Вот примеры двух возможных способов сделать это:
#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 просмотров
schedule
19.04.2022
Занятый опрос std::atomic - msvc оптимизирует петлю - почему и как предотвратить?
Я пытаюсь реализовать простую функцию цикла занятости.
Это должно продолжать опрашивать переменную std::atomic максимальное количество раз (spinCount) и возвращать true, если статус действительно изменился (на что-либо, кроме NOT_AVAILABLE) в...
129 просмотров
schedule
23.04.2023
Распространение / видимость атомарных операций (атомная нагрузка против атомной нагрузки RMW)
Контекст
Я пишу потокобезопасную библиотеку protothread / coroutine на C ++, и я использую атомики для выполнения задачи переключение без блокировки. Я хочу, чтобы он был максимально производительным. У меня есть общее представление об...
749 просмотров
schedule
21.08.2023
Инициализация 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 просмотров
schedule
29.04.2022
Как выразить в С++ 11 обычные хранилища (экспорт) и загрузки (импорт) барьеры (заборы)?
В следующем коде реализована некоторая свободная от блокировок (и атомарная!) связь между потоками, которая требует использования барьеров сохранения и загрузки памяти, но семантика освобождения-получения C++11 не подходит и не гарантирует...
238 просмотров
schedule
25.04.2023
Почему std::atomic‹std::string› выдает банально копируемую ошибку?
Моя программа проста, и я хочу использовать атомарный тип. Это работает с int или double , но не работает с std::string .
#include <iostream>
#include <atomic>
#include <string>
int main()
{
std::atomic<int>...
2150 просмотров
schedule
12.07.2022
Стоит ли объявлять size_t как std::atomic, если он используется в двух потоках?
У меня есть переменная size_t , которая обновляется std::thread и читается другим std::thread .
Я знаю, что могу защитить чтение и запись с помощью мьютекса. Но будет ли это то же самое или будет лучше, если я сделаю size_t как...
282 просмотров
schedule
24.11.2022