Описание тега stdatomic
NoneStd::atomic is a class template in the C++11 Standard Library which provides atomic operations.
1
ответ
Почему Visual C++ 2015 позволяет присваивать std::atomic?
Несколько дней назад я написал что-то вроде следующего: struct A { std::atomic_bool b = false; }; Скомпилировано в Visual Studio 2015 Update 3 с компилятором VC++2015, ничего плохого не появилось.Теперь я перекомпилировал то же самое с GCC (5.4.0) в…
17 фев '17 в 14:26
1
ответ
Какие-нибудь недостатки для std::atomic_flag, не обеспечивающего операции загрузки или хранения? (Пример Spin-Lock)
Сравнивая std::atomic_flag для std::atomic_bool (ака std::atomic<bool> мне кажется, что std::atomic_flag просто имеет более простой интерфейс. Он обеспечивает только тестирование + установку и очистку флага во время std::atomic_bool также обес…
29 авг '18 в 07:05
0
ответов
Атомарные типы: завершить вызов после выброса экземпляра "std::system_error"
Я следую этому уроку. Я могу скомпилировать пример из командной строки: g++ -std=gnu++0x AtomicCounter.cpp -o AtomicCounter -lpthread Работает нормально, но когда я бегу ./AtomicCounter Это дает ошибку: прекращение вызова после выброса экземпляра 's…
16 ноя '16 в 03:07
1
ответ
В чем (небольшая) разница в расслабляющих атомных правилах?
После того, как Херб Саттерс отлично рассказал о "атомном оружии", я немного запутался в примерах " Расслабленной атомики". Я взял с собой, что атом в модели памяти C++ (SC-DRF = последовательная согласованность для Data Race Free) "получает" при за…
09 июн '13 в 21:29
5
ответов
Стандарт C++: можно ли поднять блокированные атомарные хранилища выше блокировки мьютекса?
Есть ли в стандарте какая-либо формулировка, гарантирующая, что расслабленные хранилища для атомщиков не будут отменены над блокировкой мьютекса? Если нет, то есть ли какая-либо формулировка, в которой прямо говорится, что компилятору или процессору…
03 авг '17 в 05:04
1
ответ
Потокобезопасность коллекции atomic int
У меня есть следующий класс, обертывающий вектор атомных целых (std::vector< std::atomic_int >) Вектор правильно измерен при построении объекта и не меняет размер. Есть обычные аксессоры и мутаторы для получения, установки атомных целых, но бе…
08 сен '15 в 15:40
2
ответа
Модель памяти в C++: последовательная согласованность и атомарность
У меня есть несколько вопросов, связанных с моделью памяти в C++11. На https://www.think-cell.com/en/career/talks/pdf/think-cell_talk_memorymodel.pdf на 29. слайде написано Модель памяти C++ гарантирует последовательную согласованность Но в моих пре…
17 июл '16 в 21:05
1
ответ
Не могу скомпилировать libpd с помощью emmake (Emscripten SDK)
Я пытаюсь скомпилировать libpd для JavaScript или веб-сборки с помощью emscripten SDK. Согласно некоторым документам, если есть Makefile, его можно скомпилировать с помощью emmake make, (emconfigure не используется, потому что нет файла./configure),…
22 май '18 в 07:57
1
ответ
Читать переменную в другом потоке
Я использую Linux, и у меня есть две переменные, которые для чтения / записи в другом потоке. Время от времени (100 мс) ThreadB читает состояние переменных и что-то делает. Это в основном while(1){ dosomething(); usleep(); }, Я беспокоюсь, что перем…
20 июн '15 в 18:22
1
ответ
C++11: разница между memory_order_relaxed и memory_order_consume
Сейчас я изучаю модель порядка памяти C++11 и хотел бы понять разницу между memory_order_relaxed а также memory_order_consume, Чтобы быть конкретным, я ищу простой пример, где нельзя заменить memory_order_consume с memory_order_relaxed, Существует о…
09 июл '16 в 10:03
3
ответа
Всегда ли atomic<T *> блокируется?
На моей MAC OS, atomic<T*> без блокировки. #include <iostream> #include <atomic> int main() { std::cout << std::atomic<void*>().is_lock_free() << std::endl; return 0; } output: 1 Я хочу знать, если atomic<T*>…
13 авг '18 в 12:23
1
ответ
C++ shared_mutex реализация
boost::shared_mutex или же std::shared_mutex (C++17) может быть использован для одного писателя, несколько читателей доступа. В качестве учебного упражнения я собрал простую реализацию, которая использует спин-блокировку и имеет другие ограничения (…
16 дек '16 в 23:04
2
ответа
Как сделать так, чтобы хранилища памяти в одном потоке "быстро" были видны в других потоках?
Предположим, я хотел скопировать содержимое регистра устройства в переменную, которая будет считываться несколькими потоками. Есть ли хороший общий способ сделать это? Вот примеры двух возможных способов сделать это: #include <atomic> volatile…
02 фев '17 в 13:43
1
ответ
Проблема с использованием std::atomic_flag с рабочим потоком
Извините за многословие - я приложил все усилия, чтобы сжать мой пример кода в минимально функциональный класс и main() метод. Я пытаюсь использовать atomic_flag уведомить _rx() в моем рабочем потоке, чтобы выйти, когда stop() называется. Я считаю, …
17 июн '15 в 13:53
1
ответ
Почему std::atomic<double> не реализован при компиляции с помощью clang?
Рассмотрим следующий фрагмент кода: #include <atomic> int main(void) { std::atomic<double> aDouble; aDouble = 6.0; } G ++ компилирует это просто отлично, в то время как clang++ производит следующее: clang++ -std=c++11 Main.cpp /tmp/Main-…
07 мар '15 в 21:57
1
ответ
Неопределенная ссылка в статической библиотеке на атомарный C++11
У меня проблема при использовании статической библиотеки, которую я создаю заранее в проекте. Эта статическая библиотека использует атомарный C++11. Все хорошо компилируется и моя статическая библиотека создана. Однако, когда я пытаюсь использовать …
11 фев '16 в 12:35
1
ответ
С ++11 атомика. visibility и thread.join() / правильный способ остановить поток
За что (если есть?) STORE_ORDER & LOAD_ORDER C++11 гарантирует, что этот код выполняется за конечное время? std::atomic<bool> a{false}; std::thread t{[&]{ while(!a.load(LOAD_ORDER)); }}; a.store(true, STORE_ORDER); t.join(); Я вижу две про…
15 фев '19 в 15:36
1
ответ
Может ли переупорядочение памяти во время компиляции привести к тупикам?
Во время просмотра этого разговора о реализации атомарного кода C++11 в LLVM появился этот фрагмент кода. -- Initially -- int x = 0; std::atomic<bool> flag1{false}, flag2{false}; -- Thread 1 -- x = 42; flag1.store(true, std::memory_order_relea…
13 дек '14 в 11:17
0
ответов
Есть ли дополнительные расходы для std::atomic?
Я пытаюсь реализовать структуру данных без блокировки для проекта, над которым я работаю. Это симуляция со многими деталями (1 миллион>), и я пытаюсь сделать так, чтобы детали занимали как можно меньший размер? Если бы вы могли предоставить больше и…
23 июн '16 в 18:09
1
ответ
Хранилище атомной нагрузки с порядком памяти
В потоке A сначала выполняется x.store(1, std::memory_order_release), затем в потоке B запускается x.load(std::memory_order_acquire) . x в потоке B не гарантирует чтение 1 хранилища по A. Если я использую memory_order_seq_cst, он будет гарантированн…
22 окт '18 в 10:13