#11494boost::this_thread::yield() помечено как обесцененное в синопсисе
#11562(condition_variable_any::wait_until + recursive_mutex + steady_clock) таймер истекает после того, как компьютерное время настроено вперед на Ubuntu 64-bit
#11231Позволяет установить продолжение деструкторного поведения будущего на неблокировку
#11424Предоставить shared_timed_mutex в качестве альтернативного названия для shared_mutex и исключить использование shared_mutex в качестве mutex с временным интервалом
#11734будущее: тогда(Конт) должен быть в состоянии выполнить продолжение по неопределенной нити
#11736Разрешить использовать запуск::исполнитель на будущее::тогда(запуск::исполнитель, cont)
#11737Добавить запуск:: наследственная политика, которая может быть использована на:: тогда() использовать политику родительского будущего
Фиксированные жуки:
#6377Переменные блоки состояния при изменении времени
#6787boost::thread::sleep() hangs if system time is rolled back
#7665This_thread::sleep_for больше не использует steady_clock в потоке
#7720Исключение lock_error при интенсивной блокировке/разблокировке mutex
#9309Test_latch часто выходит из строя на clang-darwin-tot11
#10788GetLogical Процессор не доступен для платформы Windows меньше или равен 0x0502.
#11266boost::packaged_task имеет недействительную вариадную подпись
#11302нить ускорения не строится с помощью BOOST_THREAD_PATCH.
#11322Sleep_for() Наносекундная перегрузка всегда возвращается слишком рано на окнах
#11329использование декларативного для GetProcessHeap
#11368Использование потока CreateWaitableTimer пробуждает ПК от сна
#11377Переменная состояния подъема всегда ждет окончания срока системных часов
#11435предупреждение компилятора gcc в будущем. hp
#11555devector.hpp предполагает, что allocator_traits_type всегда присутствует
#11562(condition_variable_any::wait_until + recursive_mutex + steady_clock) таймер истекает после того, как компьютерное время настроено вперед на Ubuntu 64-bit
#11672Нить: Использовать уникальный_ptr, а не auto_ptr
#11688thread::try_join_until: Избегайте напряженного ожидания, если системные часы меняются
#11716:: тогда (f) должен наследовать родительский Исполнитель
#11795Неправильная спецификация версии для документации разрушителя резьбы
#11796Оператор назначения движения потока, не отделяет предыдущие данные потока
#11817'sync_queue_is_closed' не была объявлена в boost/thread/executors/thread_executor.hpp
#11818будущее. После этого он будет заблокирован, если обещание будет дано после призыва.
#12049Неисправность установки от отсоединенных нитей во время отключения
#10611Добавить обещание::set_value и emplace Make_ready_future смотреть онлайн
#10826Добавить запланированные операции исполнителя
#11048Добавить serial_executor на основе продолжений
Фиксированные жуки:
#6787boost::thread::sleep() hangs if system time is rolled back
#10734Метод представления работает по-разному на разных исполнителях, некоторые бросают исключение, а некоторые молча игнорируют ошибку (thread_executor и inline_executor)
#10736Исключения из задач молча игнорируются. Я думаю, что решение std::terminate от N3785 и std::thread является лучшим выбором и более последовательным.
#10737В serial_executor у нас есть бесконечное ожидание, если задача бросает исключение.
#10822Повышение. Thread не компилируется на Android
#10824Повышение. Thread 1.57 нарушает совместимость Windows XP для SP2 и ниже.
#6782call_once использует неправильный барьер, встроенный в Visual Studio
#6787boost::thread::sleep() hangs if system time is rolled back
#7665This_thread::sleep_for больше не использует steady_clock в потоке
#9307будущее::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Недействительный аргумент
#9308будущее: асинхронизация терпит неудачу с окончанием, называемым бросанием исключения, когда вызывается лямбда - кланг-дарвин-асан11
#9310test_4648_lib выходит из строя на clang-darwin-asan11
#9425Увеличить обещание и усилие; будущее не использует поставляемый распределитель для хранения ценности
#9558Будущее продолжение модульного теста висит в get()/pthread_cond_wait() на Mac 10.7/32-bit/x86/darwin-4.2.1
#9787[окна] Небольшое значение длительности, передаваемое на basic_timed_mutex::try_lock_until и condition_variable::wait_until, может вызвать бесконечное или почти бесконечное ожидание win32
#9880[окна] повышение::condition_variable.timed_wait() исключение, если системное время< 1970
#5752boost::call_once() ненадежен на некоторых платформах
#6652Boost.Thread shared_mutex.hpp:50:99: предупреждение: отказ от ссылки на указатель, пробитый шрифтом, нарушит строгие правила сглаживанияСтрогое сглаживание
#6843[Intel C++] Компиляция ошибок с помощью #include"
#6966Будущее повышение:: Будущее_категория непоследовательная связь
#7720Исключение lock_error при интенсивной блокировке/разблокировке mutex
Устаревшие функции с момента повышения 1.53 будут доступны только до повышения 1.58.
Соответствие C++11: packaged_taskявляется устаревшим, вместо этого используйте packaged_task. См. BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK и BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK
#7537Оскорбить Mutex::scoped_lock и scoped_try_lock и boost::condition
Новые функции:
#6270c++11 соответствие: Добавьте конструатор потоков из подвижных вызывающих и подвижных аргументов Предоставляется при определении BOOST_THREAD_PROVIDES_VARIADIC_THREAD (значение по умолчанию от Boost 1.55): BOOST_THREAD_PROVIDES_VARIADIC_THREAD и BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD.
#7279С++11 соответствие: Добавлять только функции, связанные с системой
#7281соответствие C++11: Добавьте ArgTypes в шаблон упакованной задачи. Предоставляется при определении BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK (значение по умолчанию от Boost 1.55). BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK и BOOST_THREAD_DONT_PROVIDE_SIGNATURE_PACKAGED_TASK.
#7285С++11 соответствие: Разрешить передавать подвижные аргументы для call_once
#7412С++11 соответствие: Добавить асинхронизацию из подвижных вызывающих и подвижных аргументов BOOST_THREAD_PROVIDES_VARIADIC_THREAD и BOOST_THREAD_PROVIDES_SIGNAGED_TASK определены (значение по умолчанию от Boost 1.55): См. BOOST_THREAD_PROVIDES_SIGNAGED_TASK и BOOST_THREAD_DONT_VARIADIC_THREAD.
#7413С++11 соответствие: Добавьте асинхронизацию, когда политика запуска откладывается.
#7414Соответствие C++11: будущее::получить условие должно быть действительным()==ложно.
#7422Предоставить переменную состояния с нулевой накладной производительностью.
#5752boost::call_once() ненадежен на некоторых платформах
#7464BOOST_TEST(n_alive == 1); выходит из строя из-за состояния гонки в инструменте регрессионного теста.
#7657Серьезная производительность и потребление памяти поражают, если условие_изменяемые методы уведомляют_одно или уведомляют_все используется неоднократно.
#7665This_thread::sleep_for больше не использует steady_clock в потоке.
#7668thread_group::join_all() следует проверить, совместимы ли его потоки.
#7669thread_group::join_all() should catch resource_deadlock_would_occur.
#7671Ошибка, включающая заголовок boost/thread.hpp на iOS.
Устаревшие функции с момента повышения 1,50 доступны только до повышения 1,55:
Эти устаревшие функции будут предоставляться по умолчанию до повышения 1.52. Если вы не хотите включать устаревшие функции, вы можете определить BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Поскольку 1.53 эти функции больше не будут включены по умолчанию. С этой версии, если вы хотите включить устаревшие функции, вы можете определить BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Эти устаревшие функции будут доступны только до повышения 1,55, то есть у вас есть еще 1 год, чтобы перейти на новые функции.
Функции, связанные со временем, не используют Boost. Библиотека Хроно, используйте перегрузки Хроно.
Переломные изменения при BOOST_THREAD_VERSION==3 (Значение по умолчанию с момента увеличения 1.53):
Есть некоторые новые функции, которые имеют один и тот же интерфейс, но с разным поведением. Эти функции по умолчанию предоставляются, когда BOOST_THREAD_VERSION 3, но пользователь может выбрать поведение версии 2, определив соответствующий макрос. Что касается устаревших функций, эти сломанные функции будут доступны только до повышения 1,55.
#6229Переименуйте уникальное будущее в будущее после c++11.
#6266Переломное изменение: разрушитель резьбы должен вызывать прекращение при соединении.
#6269Разрывное изменение: назначение перемещения потока должно вызывать прекращение при соединении.
Новые особенности:
#2361thread_specific_ptr: документный характер ключа, сложность и обоснование.
Устаревшие функции с момента повышения 1,50 доступны только до повышения 1,55:
Эти устаревшие функции будут предоставляться по умолчанию до повышения 1.52. Если вы не хотите включать устаревшие функции, вы можете определить BOOST_THREAD_DONT_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Поскольку 1.53 эти функции больше не будут включены по умолчанию. С этой версии, если вы хотите включить устаревшие функции, вы можете определить BOOST_THREAD_PROVIDE_DEPRECATED_FEATURES_SINCE_V3_0_0. Эти устаревшие функции будут доступны только до повышения 1.55, то есть у вас есть 1 год с половиной, чтобы перейти на новые функции.
Функции, связанные со временем, не используют Boost. Библиотека Хроно, используйте перегрузки Хроно.
Переломные изменения при BOOST_THREAD_VERSION==3:
Есть некоторые новые функции, которые имеют один и тот же интерфейс, но с разным поведением. Эти функции по умолчанию предоставляются, когда BOOST_THREAD_VERSION 3, но пользователь может выбрать поведение версии 2, определив соответствующий макрос. Что касается устаревших функций, эти сломанные функции будут доступны только до повышения 1,55.
#6229Переименуйте уникальное будущее в будущее после c++11.
#6266Переломное изменение: разрушитель резьбы должен вызывать прекращение при соединении.
#6269Разрывное изменение: назначение перемещения потока должно вызывать прекращение при соединении.
Фиксированные жуки:
#4258Связь с потоком ускорения не работает на mingw/gcc 4.5.
#4885Нарушение доступа в set_tss_data при выходе из процесса из-за неверного предположения о TlsAlloc.
#7052Нить: BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 маскирует только нить::operator==, thread::operator!= forward declarations, not definitions.
#7066Попытка исправить порядок статической инициализации current_thread_tls_key.
Почти каждая строка кода вBoost.Threadбыла изменена с момента выпуска 1.34. Однако большинство изменений интерфейса были расширениями, поэтому новый код в значительной степени обратно совместим со старым кодом. Новые функции и изменения описаны ниже.
Переменные состояния теперь могут использоваться с любым типом, который реализует концепцию<Lockable>, посредством использования<boost::condition_variable_any><boost::condition>является<typedef>до<boost::condition_variable_any>, предусмотренной для обратной совместимости.<boost::condition_variable>предоставляется в качестве оптимизации и будет работать только с<boost::unique_lock<boost::mutex>><boost::mutex::scoped_lock>.
Идентификаторы потока отделены от<boost::thread>, поэтому поток может получить свой собственный идентификатор (с использованием<boost::this_thread::get_id()>), и идентификаторы могут использоваться в качестве ключей в ассоциативных контейнерах, поскольку они имеют полный набор операторов сравнения.
В настоящее время тайм-ауты реализуются с использованием библиотеки Boost DateTime, с помощью typedef<boost::system_time>для абсолютных тайм-аутов и с поддержкой относительных тайм-аутов во многих случаях.<boost::xtime>поддерживается только для обратной совместимости.
Замки реализуются как общедоступные шаблоны<boost::lock_guard>,<boost::unique_lock>,<boost::shared_lock>и<boost::upgrade_lock>, которые шаблонируются по типу mutex. Концепция<Lockable>была распространена на общедоступные<lock()>и.<unlock()>функции-члены, которые используются типами блокировки.
<boost::detail::thread::lock_ops>был удален. Код, основанный на деталях реализации<lock_ops>, больше не будет работать, поскольку он был удален, так как больше нет необходимости в том, что типы мутексов теперь являются общедоступными<lock()>и.<unlock()>Функции членов.
<scoped_lock>Конструкторы со вторым параметром типа<bool>больше не предусмотрены. С предыдущими релизами ускорения<
>можно было использовать для создания объекта блокировки, который был связан с мутексом, но не блокировал его на конструкции. Этот объект теперь заменен конструктором, который принимает второй параметр<boost::defer_lock_type>:<
Функция<locked()>членов типов<scoped_lock>была переименована в<owns_lock()>.
Вы больше не можете получить<boost::thread>экземпляр, представляющий текущую нить: объект, построенный по умолчанию<boost::thread>, не связан с какой-либо нитью. Единственным применением для такого объекта резьбы была поддержка операторов сравнения: эта функциональность была перенесена на<boost::thread::id>.
Статья History раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 35. Thread 4.7.1 может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.