powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Data race, race condition и корректно синхронизированная программа
2 сообщений из 2, страница 1 из 1
Data race, race condition и корректно синхронизированная программа
    #38374264
DEVcoach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,
1) Что такое dara race? А что такое race condition? Это одно и тоже или нет? Если нет, то в чем отличие?
2) Какую практическую ценность имеет понятие data race?
3) Если в программе нет data race'ов, то он считается корректно синхронизированной. Означает ли это, что программа корректно работает в многопоточном окружении? Если нет, то какоеа практическая ценность понятия "корректно синхронизированная программа"?
...
Рейтинг: 0 / 0
Data race, race condition и корректно синхронизированная программа
    #38375498
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DEVcoach,

Почти все ответы на ваши вопросы есть в JLS, Chapter 17 "Threads and Locks". Читайте.

Что такое dara race?
Наличие двух конфликтующих (чтение/запись) обращений к одной и той же переменной, не связанных при этом happens-before ordership. JSL 17.4.1, JLS 17.4.5

А что такое race condition?
А это когда поведение программы зависит от того, в каком порядке выполнились определенные части кода. Например, один поток может открывать поток (fileinputstream, например), а второй читает из этого потока. При этом потоки могут быть прекрасно синхронизированы на обращение (и открытие, и чтение - в syncrhonized-блоке), но порядок выполнения операций (открытие/чтение) строго не задан. А еще есть гонки со внешней средой. Когда сначала файл проверятеся на наличие, а потом читается (и может быть удален в момент между проверкой и чтением).

Это одно и тоже или нет? Если нет, то в чем отличие?
Совершенно разные вещи. См. выше. Причем даже при наличии data race программа может не иметь race condition (и наоборот). И race condition в JLS не определен, только data race.

Какую практическую ценность имеет понятие data race?
Зависит от конкретной программы. В целом определяет, какие забавные эффекты можно увидеть (и можно ли ими пренебречь).

Если в программе нет data race'ов, то он считается корректно синхронизированной. Означает ли это, что программа корректно работает в многопоточном окружении?
Нет конечно. Программа может работать некорректно даже в однопоточном окружении. Никакая спецификация вам корректность не гарантирует. Для этого используются верификаторы, unit-тесты и все остальное. В частности, correctly synchronized program может содержать race conditions.

Если нет, то какова практическая ценность понятия "корректно синхронизированная программа"?
Большая. Корректно-синхронизированная программа по определению является sequentially consistent. Т.е. в любом total order процесса выполнения все прочитанные значения - самые новые.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Data race, race condition и корректно синхронизированная программа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]