Предложена C ++ 0x-совместимая библиотека атомизации Boost: http://www.chaoticmind.net/~hcb/projects/boost.atomic/
Цель этой библиотеки - предоставить реализацию атомарных операций для повышения, основанную на интерфейсе, заданном проектом стандарта C ++ 0x. Он призван упростить переход на std :: atomic, а также предоставить средства, позволяющие сделать код с использованием этой функции C ++ 0x скомпилированным на старых системах.
Это, очевидно, еще не является частью Boost, но вы можете проверить ветку обзора здесь: http://lists.boost.org/Archives/boost/2009/12/160195.php
Boost.Atomic теперь в форме, которую я считаю называть релизом. Он поддерживает «истинные» атомарные переменные в:
- gcc / x86, 32-битный (тестируется в Linux, FreeBSD)
- gcc / x86, 64-битный (тестируется на Linux)
- gcc / powerpc32 (протестировано на Linux, Mac OS X)
- gcc / powerpc64 (не проверено)
- универсальный Win32 (протестировано с Visual Studio Express на Win XP)
Для всех остальных это изящно возвращается к заблокированной операции. Существует надлежащая документация по быстрой книге, включая, надеюсь, иллюстративный раздел с примерами.
Он заработал с помощью инструмента командной строки под названием devcon, который я затем вызвал из кода.
Перетащил devcon.exe в один из системных путей, чтобы он работал везде.
Devcon: devcon
называется: DEVCON Remove * usb "* MI_01"
, затем вызвал: DEVCON повторно сканировать
код:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "DEVCON";
proc.StartInfo.Arguments = "Remove *usb"*MI_01";
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();