В чем разница между boost::signal2::mutex и boost::thread::mutex?
Я использую scoped_lock
а также mutex
реализовать версию BlockingQueue, опубликованную в другом вопросе SO, но есть несколько разных предварительно скомпилированных заголовков для них обоих.
scoped_lock
доступно через "boost/interprocessor/sync/scoped_lock.hpp" и "boost/thread/mutex.hpp"
mutex
доступно через "boost/thread/mutex.hpp", "boost/signal2/mutex.hpp" и "boost/thread/win32/mutex.hpp"
Я могу догадаться, что "win32/mutex.hpp" каким-то образом оптимизирован для Windows, но как насчет других? Какая разница между ними?
1 ответ
Сигналы 2:: мьютекс являются частью библиотеки сигналов 2, таким образом, предположительно, мьютекс специального назначения только для этой библиотеки.
Универсальный мьютекс - это "boost/thread/mutex.hpp" и должен быть тем, который вы используете. Версия "win32" будет автоматически включена в общий файл и содержит код для мьютексов в Windows. Таким образом, универсальный заголовок является оберткой для определенных классов ОС.