powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
12 сообщений из 12, страница 1 из 1
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38420856
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто теоретический вопрос. Допустим, есть у нас поток, который выполняется на core0. И в какой-то момент он берет и изменяет переменную A с 0 на 1, да так, что это изменение уходит в L1 кэш этого ядра, но не уходит в память. Потом этот поток вытесняется scheduler-ом, и в следующий раз получает квант времени уже на другом ядре core1, которое ничего про изменение A с 0 на 1 не знает.
Вопрос: не увидит ли в этом случае поток устаревшее значение?

Я на 100% уверен, что нет, ибо в этом случае мы бы тупо не могли ничего запрограммировать Но какие механизмы за этим стоят? Куда и в каком виде сохраняется состояние потока при context switch? Посоветуйте литературу на эту тему для современных платформ и операционок.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38420860
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чет ты форумом наглухо ошибся. На сколько я понимаю, при переключении контекста кеши обязаны синхронизироваться с памятью.
Читать, по-моему нужно мануалы по архитектуре конкретных процессоров. Сейчас не вспомню, но когда-то давали ссылу на хороший мануал именно от Intel. Поищу.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38420876
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, согласен, уже не тот подфорум Что-то я настолько углубился в проблемы многопоточности, что даже не заметил, что от Java в моих вопросах почти ничего не осталось.
Есть нехорошее подозрение, что такими темпами скоро придется начать писать на С/C++.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38420878
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Java достаточно оперировать Java Memory Model.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38420885
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДля Java достаточно оперировать Java Memory Model.Вот не соглашусь. Любая абстракция всегда накладывает определенные ограничения. Вопрос лишь в том, как скоро ты в эти ограничения упрешься. В этом плане JMM сделана на очень высоком уровне, так как упереться в ее ограничения еще надо постараться. Тем не менее, такое случается. Мы в конторе, например, уже страдали от false sharing и отсутствия thread affinity. И если посмотреть на последние творения Doug Lee, то там так же прослеживаются различные хаки вроде паддинга в ForkJoinPool или недокументированного хака с Unsafe в StampedLock.
Но 99,5% потребностей Java-программиста JMM закрывает, за что огромное спасибо ее разработчикам и идеологам.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38420912
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНа сколько я понимаю, при переключении контекста кеши обязаны синхронизироваться с памятью.


Вроде как не обязаны, но зависит от процессора и оси, вы правы. А вот при threads migration они по-любому будут сбрасываться, пруф правда найти не смог. Хотя кое-что интересное нарыл.

http://mechanical-sympathy.blogspot.com/2013/02/cpu-cache-flushing-fallacy.html(в самом конце о конекст свитчах и L1).
http://cs.stackexchange.com/questions/1088/what-happens-to-the-cache-contents-on-a-context-switch(а тут и манулаы к процессорам есть)
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38421122
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такого не может быть хотя бы потому, что это нарушает согласованность кэшей процессоров и памяти.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38421130
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schwaТакого не может быть хотя бы потому, что это нарушает согласованность кэшей процессоров и памяти.
Вопрос не в том может или не может. Вопрос в том, где про это читать.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38421132
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник http://cs.stackexchange.com/questions/1088/what-happens-to-the-cache-contents-on-a-context-switch(а тут и манулаы к процессорам есть)
Да, там внутри ссылки на мануалы по CPU, я их и имел ввиду. Там должно быть задокументировано поведение.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38421162
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczschwaТакого не может быть хотя бы потому, что это нарушает согласованность кэшей процессоров и памяти.
Вопрос не в том может или не может. Вопрос в том, где про это читать.
Ввиду того, что этот вопрос покрывает огромное число сфер (от работы железок и как там выполняются инструкции до работы операционных систем, со всеми переключениями их юзер мода в кернел), то литературы, которая покрывает все от и до, но при этом не переходит на "вы это уже знаете" или "мы это обсуждать не будем, а примите это как мы тут написали", не существует (но если она есть, то там будет несколько тысяч страниц, но такой не встречал).

По железкам можно начать с что-нибудь вроде этого http://www.amazon.com/Computer-Architecture-Fifth-Edition-Quantitative/dp/012383872X

Дальше что-то будь по операционным системам. Наверное некоторые юниксы должны быть прилично покрыты в литературе.
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38421178
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczзабыл ник http://cs.stackexchange.com/questions/1088/what-happens-to-the-cache-contents-on-a-context-switch(а тут и манулаы к процессорам есть)
Да, там внутри ссылки на мануалы по CPU, я их и имел ввиду. Там должно быть задокументировано поведение.
Только стоит учесть, что все усложняется тем, что скедулер может использовать только малую часть этих вещей, а остальное реализовывать на уровне операционной системы (и некоторые так и делают).
...
Рейтинг: 0 / 0
Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
    #38421947
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Вытесняется в кэш, но не вытесняется в память" без уточнения уровня и типа кэша - это пять.
Cache snooping, вроде, никто не отменял. Тем более - на многоядерных процессорах.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Теоретизирование: может ли быть data race при переходе потока с одного ядра на другое?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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