2015-05-04 3 views
0

Студия 2012 C++ документация Визуальный утверждает, что _ReadBarrier и _WriteBarrier встроенные функции теперь deprecated:std :: _ Atomic_thread_fence (с капиталом A) это правильно?

_ReadBarrier, _WriteBarrier и _ReadWriteBarrier компилятор и встроенные функции макро MemoryBarrier все устарели и должны не могут быть использованы. Для межпоточной связи используйте такие механизмы, как atomic_thread_fence и std::atomic<T>, которые определены в стандартном справочнике библиотек C++ . Для доступа к оборудованию используйте параметр/volatile: iso , а также ключевое слово volatile (C++).

После показаний, я затем перейти к atomic_thread_fencedocumentation и заявляет, что функция определена на заголовке <atomic>. Если я включаю такой заголовок в мое решение, я не могу найти функцию, но вместо этого найду std::_Atomic_thread_fence.

Именование указывает на то, что это реализация, специфичная для Microsoft. Является ли это проблемой документации или мне нужно изменить, возможно, пути поиска по умолчанию #include?

+1

Хмм, интересно, я могу определенно увидеть 'atomic_thread_fence' в' 'на моем VS2012. '_Atomic_thread_fence' находится в' '. –

+1

Использование vs 2013, это происходит и со мной, однако, когда я исправляю его на 'atomic_thread_fence', он работает отлично. – phantom

+0

@ T.C: вы совершенно правы, я не заметил, что если я перейду к «открытому определению», файл, который фактически открыт, это '', который фактически включен в '' - Спасибо! – BlueStrat

ответ

1

Это, похоже, просто проблема с Visual Studio intellisense. Если вы исправите его до atomic_thread_fence, он должен работать так, как предполагалось.

Смежные вопросы