Вопрос

Я знаю, что аналогичный шаблон выходит в TBB Intel, кроме того, я не могу найти какую-либо реализацию в Google или в Boost library.

Это было полезно?

Решение

Вы можете найти обсуждения о реализации этой функции в boost там : http://lists.boost.org/Archives/boost/2008/11/144803.php

> Могут ли быть реализованы атомарные типы и операции N2427 - C ++

> без помощи компилятора?

Нет.

Они не должны быть встроенные функции, если вы можете написать встроенный ассемблер (или отдельно скомпилированные ассемблер для это важно), то вы можете написать сами операции напрямую.Вы могли бы даже быть в состоянии использовать простой C ++ (напримерпросто простое назначение для загрузки или сохранения).Причина, по которой вам нужна поддержка компилятора, заключается в предотвращении неуместных оптимизаций:атомарные операции не могут быть оптимизированы и обычно не должны переупорядочиваться до или после любых других операций.Это означает, что даже неатомные хранилища, выполняемые до атомарного хранилище должно быть полным и не может кэшироваться в регистре (например).Кроме того, грузы, которые возникают после атомной операции, не могут быть подняты до атомной операции.В некоторых компиляторах достаточно просто использовать встроенный ассемблер .В других случаях достаточно вызова внешней функции.MSVC предоставляет _ReadWriteBarrier() для обеспечения порядка компилятора.Другим компиляторам нужны другие флаги.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top