|
Котовчанин
|
|
Что такое thread safe?01.02.2017, 15:43. Показов 12238. Ответов 44
Метки нет (Все метки)
Всем добрый день!
Вопрос, собственно, в имени темы. ![]() Что это такое? Я так понимаю, что переменная не меняет значения при изменении потоков? Всегда плавала в этой теме. ![]() И какие есть способы сохранить переменную? Заранее спасибо
1
|
|
| 01.02.2017, 15:43 | |
|
Ответы с готовыми решениями:
44
thread-safe ли?
Секундомер и thread-safe |
|
|
||||
| 01.02.2017, 20:34 | ||||
|
4
|
||||
|
Неэпический
|
|
| 01.02.2017, 20:35 | |
|
1
|
|
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 01.02.2017, 20:54 | |
|
Тамика, если планируете всерьёз изучать тему по параллельному программированию, то обязательно прочтите "Параллельное программирование на С++ в действии. Практика разработки многопоточных программ". Я как раз вчера себе бумажную версию заказал, планирую перечитать.
Добавлено через 35 секунд Не по теме: А, блин, не заметил, что уже успели на вторую страницу нафлудить.
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 01.02.2017, 21:02 | |||||||
|
единственное: использовать мутекс в данном примере - нерационально. если так приспичело локать/анлокать, то лучше использовать спинлок (в стандартной либе его нет. но он элементарно велосипедится стандартными средствами. если хотите - могу подкинуть готовый образчик) ну кроме того, конкретно в этом примере вообще не нужны ни мутексы, ни спинлоки. лучше всего для этой задачи подойдет std::atomic можно сделать вот так вот:
причем на большинстве платформ, std::atomic<int> вообще вроде как оптимизирован, и не использует блокировку.
3
|
|||||||
|
|
||
| 01.02.2017, 21:15 | ||
C ID++; return ID; А по части обучения - в очередной раз выскажусь на тему того, что сначала надо изучать матчасть, а потом пользоваться всякими плюшками от Си++ и прочих монстров
1
|
||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
| 18.02.2018, 07:17 | |
|
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 18.02.2018, 11:37 | |
|
rat0r,
А что это даст? Все равно остаётся 2 операции, инкремент и копирование данных в вызывающую сторону... И вполне возможно что после инкремента но до процесса копирования в вызывающую сторону другой поток мог бы изменить значение атомарной переменной... В итоге вернётся значение которое функция не предусматривала.
0
|
|
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|||
| 18.02.2018, 13:22 | |||
|
Evg, да, я делаю так же, когда вижу, что кто-то городит мьютексы там, где достаточно std::atomic.
0
|
|||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|
| 18.02.2018, 13:27 | |
|
0
|
|
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||
| 18.02.2018, 14:36 | ||
|
А вот послушать аргументы почему код, про который известно, что он корректный, работает неправильно, это всегда любопытно.
0
|
||
|
|
|||
| 18.02.2018, 15:05 | |||
|
0
|
|||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||
| 18.02.2018, 15:19 | ||
|
Чёрт с оригинальным заданием, мы обсуждаем std::atomic + return ID++;. Как тут поможет чтение треда? Получается классическая ситуация, когда обсуждаются красные треугольники, а меня отправляют читать про зелёные квадраты.
0
|
||
|
|
||
| 18.02.2018, 15:21 | ||
|
Добавлено через 1 минуту Не по теме: Не по-русски выразился, ну да ладно, вроде бы смысл ясен
0
|
||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||||||
| 18.02.2018, 20:01 | ||||||||
std::atomic, было неясно, про что мы говорим?Добавлено через 4 часа 35 минут В общем, я так понял, к корректности кода
0
|
||||||||
|
|
||
| 18.02.2018, 20:21 | ||
|
Что касается последнего твоего примера из поста #39, то, вероятно, это должно спасти ситуацию, но не уверен. Вот тут http://en.cppreference.com/w/cpp/atomic/atomic нет внятного описания, что делает оператор ++. Рядом описан метод fetch_add, по описанию он и выполняет то, что нужно. Если посмотреть на препроцессированный файл из-под g++, то оператор ++ реализован в виде fetch_add(1), т.е. как бы делает то, что нужно Поэтому если в стандарте оператор ++ описан именно так, то такая реализация будет корректной. Правда перед ТС'ом была поставлена другая задача, но не суть
0
|
||
| 18.02.2018, 20:21 | |
|
Thread-safe ли чтение структур? что такое process и thread? Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе.
Самым главным критерием для меня было создание паролей, в котором отсутствуют знаки: | 1 l I
Обработка содержит реквизиты:
-. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|