Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/55: Рейтинг темы: голосов - 55, средняя оценка - 4.95
Котовчанин
942 / 482 / 200
Регистрация: 16.02.2010
Сообщений: 3,338
Записей в блоге: 35

Что такое thread safe?

01.02.2017, 15:43. Показов 12045. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!

Вопрос, собственно, в имени темы.

Что это такое? Я так понимаю, что переменная не меняет значения при изменении потоков? Всегда плавала в этой теме.

И какие есть способы сохранить переменную?

Заранее спасибо
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2017, 15:43
Ответы с готовыми решениями:

thread-safe ли?
Насколько я понимаю, для х32 процессоров атомарными операциями не являются те, что с double/long long, для х64 же и они атомарны. Если я...

Vector и thread-safe
Как лучше сделать свой класс типа контейнер шаблонный как вектор который будет ещё и thread-safe. Допустим есть обычный класс внутри вектор...

Секундомер и thread-safe
В моей программе мне нужно отслеживать время по секундам. Я сделал следующее: создал доп. поток, в котором вызывается методом с телом: ...

44
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
18.02.2018, 20:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
Вот тут http://en.cppreference.com/w/cpp/atomic/atomic нет внятного описания, что делает оператор ++.
Зато там есть ссылка http://en.cppreference.com/w/c... ator_arith, где есть внятное описание.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,670
Записей в блоге: 30
18.02.2018, 20:44
Просто изначальный вопрос был как написать thread-safe код. Инкрементация ID - это очень частный случай, который тем не менее ТС'у сгодился в качестве образовательных целей, как простой пример, где может потребоваться thread-safe код

Далее пришёл hoggy и начал вещать о том, что это нерационально и надо использовать атомарный инкремент. Попросту, не разобрался о чём идёт речь. А речь шла вовсе не об инкременте, а о thread-safe куске кода. Инкремент был всего лишь простым примером. Допустим, задача немного расширится. Нужно будет сделать две инкрементации. Или записать что-то в файл. Или послать сетевой пакет. Не суть. В варианте с lock-unlock нужно просто добавить требуемый код в критическую секцию. В варианте с атомарным инкрементом ничего не остаётся, кроме как развести руками

Далее пришёл ты и начал развивать тему этого несчастного инкремента, в то время как изначально речь шла вовсе не о нём. Поэтому и получился неконструктивный диалог. Тем, кто был в теме изначально постановки вопроса, было малопонятно, к чему вся эта шняга про атомарный инкремент
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.02.2018, 20:51
Цитата Сообщение от Evg Посмотреть сообщение
Далее пришёл hoggy и начал вещать о том, что это нерационально и надо использовать атомарный инкремент. Попросту, не разобрался о чём идёт речь.
ничего подобного.
Хогги сначала ответил по существу,
и лишь уже затем обратил внимание на избыточность мутексов там,
где сгодится спинлок, или атомик.
вариант с атомарным инкрементом - лишь один из таких примеров.
господин Evg попросту не разобрался о чем идет речь.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.02.2018, 13:52
Цитата Сообщение от rat0r Посмотреть сообщение
Ну заменить на return ID++;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int Foo1(int ID)
{
    ID++;
    return ID;
}
 
int Foo2(int ID)
{
    return ID++;
}
 
int main()
{
    const int ID = 42;
    std::cout << Foo1(ID) << " " << Foo2(ID) << std::endl;
}
http://rextester.com/DVDSN48408
Code
1
2
Output:
43 42
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.02.2018, 13:55
Цитата Сообщение от hoggy Посмотреть сообщение
господин Evg
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.02.2018, 13:55

Thread-safe smart pointer
Нужно мне это для реализации COW механизма. В STL, насколько я понимаю, shared_ptr такого не может дать. Однако, покопавшись в...

Thread-safe ли чтение структур?
Собственно, безопасно ли нескольким потокам одновременно читать значение глобальной переменной, если она не влазит в примитивный тип?

что такое process и thread?
что такое process и thread?

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
45
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru