В чем разница между 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. Таким образом, универсальный заголовок является оберткой для определенных классов ОС.

Другие вопросы по тегам