|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
volatile для синхронизации потоков04.09.2020, 14:21. Показов 1589. Ответов 15
Метки нет (Все метки)
0
|
|
| 04.09.2020, 14:21 | |
|
Ответы с готовыми решениями:
15
Понятие синхронизации потоков и процессов. Семафоры и мьютексы Использование mutex для синхронизации двух потоков Простейший случай синхронизации потоков |
|
фрилансер
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,998
|
|
| 04.09.2020, 14:24 | |
|
ReYalp, насколько мне известно - никак. Используй std::atomic или std::mutex
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 04.09.2020, 14:27 [ТС] | |
|
Алексей1153, вопрос был на собеседовании что такое volatile и для чего он нужен, я рассказал что знаю , но мне сказали что это не совсем правильный овтет и что volatile еще использовался как инструмент синхронизации потоков(вроде до 11го стандарта). Так вот интересно каким образом
0
|
|
|
фрилансер
6444 / 5637 / 1128
Регистрация: 11.10.2019
Сообщений: 14,998
|
|
| 04.09.2020, 14:33 | |
|
ReYalp, volatile - это пометка для компилятора, что ресурс может модифицировать кто-то другой (другой процесс, железяка, драйвер), а не только наша программа
Добавлено через 2 минуты ReYalp, https://youtu.be/dFEBrGJ8j2w?t=698 ссылка с меткой времени, смотри именно оттуда, там рассказывается про volatile
1
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 04.09.2020, 14:43 | ||
Сообщение было отмечено ReYalp как решение
Решениеhttps://docs.microsoft.com/ru-... -compliant В рамках стандартного C++ использование его для синхронизации некорректно.
2
|
||
|
Заблокирован
|
|
| 04.09.2020, 15:02 | |
|
Насколько я понял volatile к переменной запрещает компилятору применять к ней (переменной с таким атрибутом) какую либо оптимизацию,
на этом все как бы. Не могу понять при чем тут потоки и синхронизация. (объясните если что.)
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 04.09.2020, 16:23 | ||
|
volatile-переменные, в отличие от обычных, не оптимизируются компилятором, поэтому их вполне можно использовать для синхронизации потоков. Но не любой и только очень аккуратно. Нужно учитывать, что там будут отсутствовать барьеры памяти.
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 04.09.2020, 16:29 [ТС] | |
|
oleg-m1973, а за счет чего происходит синхронизация? И причем здесь барьеры памяти? volatile же просто отключает оптимизацию , каким боком он синхронизирует доступ к данным? Да еще и без барьеров
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 04.09.2020, 16:31 | ||
|
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 04.09.2020, 16:34 [ТС] | |
|
oleg-m1973, это понятно, но каким образом с помощью volatile? мьютексы - блокируют поток, атомарные операции - синхронизируют ядра, а volatile что?
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 04.09.2020, 16:39 | ||
|
А потоки синхронизируешь ты сам, в алгоритме.
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||
| 04.09.2020, 16:48 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 04.09.2020, 16:57 | ||
|
Синхронизация при помощи volatile это примерное то же самое, что и синхронизация при помощи atiomic с memory_order_relaxed.
1
|
||
|
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,679
|
|
| 04.09.2020, 17:00 | |
|
ReYalp, вот лежит у тебя байт в шаред мемори один поток запускает другой, который ставит этот байт в значение 1 и дальше крутится в цикле пока байт не станет 0, а этот 0 пишет первый поток, потому компилятор может оптимизировать эту переменную так как в коде второго потока с ней ничего не происходит и подставить в цикл вечное 1, волатиль обяжет второй поток перечитывать значение на каждой итерации.
1
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
| 04.09.2020, 17:07 | ||||||
|
ReYalp, вот пример синхронизации при помощи переменной
0
|
||||||
| 04.09.2020, 17:07 | |
|
Помогаю со студенческими работами здесь
16
Заменить volatile на Thread.MemoryBarrier. Код приведён. Как оптимизировать обращения для чтения к volatile полю класса? Синхронизация рабочей памяти потоков и volatile
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period.
Это. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|