Является ли синхронизация внутренней концепцией стандарта C++? ⇐ C++
Является ли синхронизация внутренней концепцией стандарта C++?
Помимо этих операций, определенных в стандарте C++, есть семантика синхронизации, которая может устанавливать «происходит раньше» согласно [intro.races] стр. 10
Оценка A происходит до оценки B (или, что то же самое, B происходит после A), если:
[*][...] [*]Межпоточный обмен происходит до B.
Оценка A между потоками происходит до оценки B if
[*]A синхронизируется с B или
То есть в двух потоках A происходит раньше, чем B, если A синхронизируется с B. Однако является ли синхронизация внутренней концепцией, определенной только для стандарта C++? Или это открывающаяся концепция, которая может быть определена другими документами (например, документами реализации) за пределами стандарта C++? Другими словами, разрешает ли стандарт C++ другой документ/платформу или третью библиотеку определять отношения синхронизации так, чтобы они в дальнейшем имели отношения «происходит до»?
Я спрашиваю, может ли третья библиотека указать синхронизацию для парных операций так, чтобы они имели отношение «до того, как произошло» в соответствии с приведенным выше определением? Например, на определенной платформе он обеспечивает lock и unlock, что не является инфраструктурой стандартной библиотеки C++, однако нам необходимо использовать их для предотвращения гонки данных на этой платформе. Однако избежание гонки данных зависит от того, смогут ли они установить отношения «происходит до». Если синхронизация является внутренней концепцией стандарта C++, это будет означать, что мы не можем использовать какую-либо третью библиотеку.
Помимо этих операций, определенных в стандарте C++, есть семантика синхронизации, которая может устанавливать «происходит раньше» согласно [intro.races] стр. 10
Оценка A происходит до оценки B (или, что то же самое, B происходит после A), если:
[*][...] [*]Межпоточный обмен происходит до B.
Оценка A между потоками происходит до оценки B if
[*]A синхронизируется с B или
То есть в двух потоках A происходит раньше, чем B, если A синхронизируется с B. Однако является ли синхронизация внутренней концепцией, определенной только для стандарта C++? Или это открывающаяся концепция, которая может быть определена другими документами (например, документами реализации) за пределами стандарта C++? Другими словами, разрешает ли стандарт C++ другой документ/платформу или третью библиотеку определять отношения синхронизации так, чтобы они в дальнейшем имели отношения «происходит до»?
Я спрашиваю, может ли третья библиотека указать синхронизацию для парных операций так, чтобы они имели отношение «до того, как произошло» в соответствии с приведенным выше определением? Например, на определенной платформе он обеспечивает lock и unlock, что не является инфраструктурой стандартной библиотеки C++, однако нам необходимо использовать их для предотвращения гонки данных на этой платформе. Однако избежание гонки данных зависит от того, смогут ли они установить отношения «происходит до». Если синхронизация является внутренней концепцией стандарта C++, это будет означать, что мы не можем использовать какую-либо третью библиотеку.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как получить максимально доступный размер внутренней высоты и внутренней ширины окна?
Anonymous » » в форуме Javascript - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-