Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

History

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 35. Thread 4.7.1

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Version 4.7.1 - boost 1.62

Знать жуков:

  • #3926thread_specific_ptr + dlopen библиотека вызывает SIGSEGV.

Пожалуйста, определите BOOST_THREAD_PATCH, чтобы применить патч, который, к сожалению, может привести к регрессии, как описано в#12049..

Пожалуйста, взгляните напоток Знать жуки, чтобы увидеть текущее состояние.

Пожалуйста, взгляните натест регрессии ствола нити, чтобы увидеть последний снимок теста регрессии.

Фиксированные жуки:

  • #11097test_scheduled_tp - ThreadSanitizer: heap-use-after-free
  • #11951Утечка памяти в ускорении::When_all
  • #12102condition_variable_fwd.hpp не компилируется, когда BOOST_THREAD_PROVIDES_INTERRUPTIONS инвалид
  • #12120Улучшение производительности в thread/barrier.hpp
  • #12146make_ Exceptional_future не упоминается в документах
  • #12202shared_lock должен быть в заголовке share_mutex
  • #12220Утечка памяти в будущем:
  • #12293бустер::будущее::тогда лямбда, призванная раньше будущего, готова.
  • #12350shared_mutex (pthreads) разблокированный слишком рано в unlock_shared()
  • #12371ускорение потока/будущего. HPP не удалось создать

и несколько PR

  • #88 исправить опечатки в boost::upgrade_lock
  • #89 исправить ошибку в обновлении_to_unique_lock<>::operator=()
  • #90 исправить ошибку в try_lock_wrapper<>::operator=()
  • #91 Добавить Shared_lock_guard к включенным типам блокировки
  • #92 Фиксированная компиляция с MSVC-8.
  • #93 Исправьте предупреждения о затенении переменных (Clang)
  • #94 Устранение ошибок при повышении::барьер
  • #95 Исправьте ошибку в boost::completion_latch
  • #96 переименовать async_func.hpp в invoker.hpp.
  • #97 исправить ошибку в sync_timed_queue<>::pull_until()

Version 4.7.0 - boost 1.61

Знать жуков:

  • #3926thread_specific_ptr + dlopen библиотека вызывает SIGSEGV.

Пожалуйста, определите BOOST_THREAD_PATCH, чтобы применить патч, который, к сожалению, может привести к регрессии, как описано в#12049..

  • #4833MinGW/test_tss_lib: Поддержка автоматической очистки tss для нативного потокового API недоступна
  • #8600wait_for_any hangs, if call with multiple copys of shared_future
  • #9118Неисправность Seg на резьбе присоединяется при использовании llvm и libc++

Пожалуйста, взгляните напоток Знать жуки, чтобы увидеть текущее состояние.

Пожалуйста, взгляните натест регрессии ствола нити, чтобы увидеть последний снимок теста регрессии.

Новые экспериментальные характеристики:

  • #11772Добавить запуск:: политика синхронизации

Фиксированные жуки:

  • #11494boost::this_thread::yield() помечено как обесцененное в синопсисе
  • #11562(condition_variable_any::wait_until + recursive_mutex + steady_clock) таймер истекает после того, как компьютерное время настроено вперед на Ubuntu 64-bit
  • #12013F_pass и FArgs_pass тесты segfault
  • #12036Повышение::physical_concurrency всегда возвращается 0, если BOOST_USE_WINAPI_VERSION не определяется

Version 4.6.0 - boost 1.60

Знать жуков:

  • #4833MinGW/test_tss_lib: Поддержка автоматической очистки tss для нативного потокового API недоступна
  • #8600wait_for_any hangs, if call with multiple copys of shared_future
  • #9118Неисправность Seg на резьбе присоединяется при использовании llvm и libc++
  • #10942Повышение. Нить не может опираться на Cygwin.

Пожалуйста, взгляните напоток Знать жуки, чтобы увидеть текущее состояние.

Пожалуйста, взгляните натест регрессии ствола нити, чтобы увидеть последний снимок теста регрессии.

Новые экспериментальные характеристики:

  • #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.
  • #11090ex_future_unwrap- ThreadSanitizer: lock-order-inversion (потенциальный тупик)
  • #11158Заход в тупик при использовании поддельного времени
  • #11174boost::condition_variable::timed_wait с предикатом неожиданно просыпается, в то время как должен ждать бесконечно
  • #11185Неправильное перенаправление URL
  • #11192boost::future<>::then() с исполнителем не компилируется, когда обратный звонок возвращает будущее
  • #11250будущее, сделанное из make_исключительных отказов на утверждение в деструкторе
  • #11256future<>::is_ready() == false in continuation function
  • #11261Плохое использование наложенных потоков в basic_thread_pool
  • #11262Плохое использование прямого указателя в shared_state_nullary_task
  • #11263Замок уже заблокирован
  • #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Неисправность установки от отсоединенных нитей во время отключения

Version 4.5.0 - boost 1.58

Знать жуков:

  • #3926thread_specific_ptr + dlopen библиотека вызывает SIGSEGV.
  • #4833MinGW/test_tss_lib: Поддержка автоматической очистки tss для нативного потокового API недоступна
  • #8600wait_for_any hangs, if call with multiple copys of shared_future
  • #9118Неисправность Seg на резьбе присоединяется при использовании llvm и libc++
  • #9309Test_latch часто выходит из строя на clang-darwin-tot11
  • #9311ex_lambda_future выходит из строя на msvc-11.0
  • #10942Повышение. Нить не может опираться на Cygwin.

Пожалуйста, взгляните напоток Знать жуки, чтобы увидеть текущее состояние.

Пожалуйста, взгляните натест регрессии ствола нити, чтобы увидеть последний снимок теста регрессии.

Несколько ограничений:

Существуют некоторые серьезные ошибки, которые препятствуют использованию библиотеки в конкретных контекстах, в частности:

  • на резьбе конкретного хранилища, препятствующего использованию библиотеки с динамическими библиотеками#3926,

Новые экспериментальные характеристики:

  • #9600Асинк: Добавить task_region
  • #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 и ниже.
  • #10963Будущее<будущее>:
  • #10964future>::unwrap(.then() Deadlocks
  • #10968Фьючерсы, возвращенные Async() и Future::then(), не блокируются.
  • #10971shared_future::get()/get_or() должен быть const
  • #10972shared_future::then() можно назвать несколько раз.
  • #10979Поддержка T& вычет типа, когда параметр make_ready_future является reference_wrapper
  • #10996Thread physical_concurrency() выходит из строя в Windows
  • #11035BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE не определен для Android
  • #11053Прикрепленный код приводит к R6025 - чистому вызову виртуальной функции в run_thread_exit_callbacks

Version 4.4.0 - boost 1.57

Знать жуков:

  • #2442Приложение статически связано с Boost. Тренд падает при установке Google Desktop (Windows XP)
  • #3926thread_specific_ptr + dlopen библиотека вызывает SIGSEGV.
  • #4833MinGW/test_tss_lib: Поддержка автоматической очистки tss для нативного потокового API недоступна
  • #7319Позаботьтесь о c++std-lib-32966 вопрос
  • #8600wait_for_any hangs, if call with multiple copys of shared_future
  • #9118Неисправность Seg на резьбе присоединяется при использовании llvm и libc++
  • #9309Test_latch часто выходит из строя на clang-darwin-tot11
  • #9310test_4648_lib выходит из строя на clang-darwin-asan11
  • #9311ex_lambda_future выходит из строя на msvc-11.0
  • #10537Крах приложения при исключении броска
  • #10651Повышение::поток утечки памяти при использовании компилятора MinGW

Пожалуйста, взгляните напоток Знать жуки, чтобы увидеть текущее состояние.

Пожалуйста, взгляните натест регрессии нитей, чтобы увидеть последний снимок.

Несколько ограничений:

Существуют некоторые серьезные ошибки, которые препятствуют использованию библиотеки в конкретных контекстах, в частности:

  • на резьбе конкретного хранилища, препятствующего использованию библиотеки с динамическими библиотеками;

Новые экспериментальные характеристики:

  • #6227Синхро: Использование вариадных шаблонов на алгоритмах блокировки Generic на компиляторах, предоставляющих их
  • #10298Синхро: Добавлены виды очередей.
  • #10300Async: Добавлен generic_executor_ref.
  • #10552Добавить make_valid_future

Фиксированные жуки:

  • #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
  • #10159Ошибка GCC 4.4 извините, не реализована
  • #10196thread_specific_ptr не поддерживает void*
  • #10296Повышение. Нить 1.56 rc1 не компилируется на Mingw
  • #10297Повышение. Нить 1.56 rc1 висит, когда построена с зацеплением на руке
  • #10340No boost::promise::set_value(const) T&) перегрузка в режиме C++03
  • #10425Недостающая документация для when_all/When_any.
  • #10426Учитывайте отложенные фьючерсы в when_all.
  • #10427Учитывайте отложенное и готовое будущее в when_any.
  • #10428Адаптация к новому уникальному_ptr интерфейсу в Boost. Двигаться
  • #10465Отсутствие реализации when_all/When_any, когда результатом является кортеж.
  • #10476классы с использованием BOOST_THREAD_MOVABLE_ONLYне удовлетворяют is_copy_constructible::value == ложный
  • #10478Гонка данных на boost/thread/future.hpp
  • #10529Конструктор pthread/condition_variable_any сообщает неправильный код ошибки для pthread_cond_init
  • #10563shared_future::тогда должно быть

Version 4.3.0 - boost 1.56

Знать жуков:

  • #2442Приложение статически связано с Boost. Тренд падает при установке Google Desktop (Windows XP)
  • #3926thread_specific_ptr + dlopen библиотека вызывает SIGSEGV.
  • #4833MinGW/test_tss_lib: Поддержка автоматической очистки tss для нативного потокового API недоступна
  • #6782call_once использует неправильный барьер, встроенный в Visual Studio
  • #7319Позаботьтесь о c++std-lib-32966 вопрос
  • #8600wait_for_any hangs, if call with multiple copys of shared_future
  • #9307будущее::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Недействительный аргумент
  • #9308будущее: асинхронизация терпит неудачу с окончанием, называемым бросанием исключения, когда вызывается лямбда - кланг-дарвин-асан11
  • #9310test_4648_lib выходит из строя на clang-darwin-asan11
  • #9311ex_lambda_future выходит из строя на msvc-11.0
  • #9425Увеличить обещание и усилие; будущее не использует поставляемый распределитель для хранения ценности
  • #9558Будущее продолжение модульного теста висит в get()/pthread_cond_wait() на Mac 10.7/32-bit/x86/darwin-4.2.1

Пожалуйста, взгляните напоток Знать жуки, чтобы увидеть текущее состояние.

Пожалуйста, взгляните натест регрессии нитей, чтобы увидеть последний снимок.

Несколько ограничений:

Существуют некоторые серьезные ошибки, которые препятствуют использованию библиотеки в конкретных контекстах, в частности:

  • на резьбе конкретного хранилища, препятствующего использованию библиотеки с динамическими библиотеками;
  • Экспериментальные особенности ускорения: будущее имеют некоторые серьезные отверстия, которые делают программу неожиданной.

Новые экспериментальные характеристики:

  • #7446Асинк: Добавить when_any
  • #7447Асинк: Добавить when_all
  • #7448Асынк: Добавьте асинхронизацию с параметром планировщика.
  • #8274Синхро: Добавить параллельную очередь
  • #8518Синхро: Добавьте класс защелки.
  • #8513Асинк: Добавить базовый файл thread_pool.
  • #8516Асинк: Добавить future/shared_future: затем взять планировщик в качестве параметра.

Фиксированные жуки:

  • #8070Предпочитают GetTickCount64
  • #9333ex_scoped_thread компиляция выходит из строя на msvc-12.0
  • #9366async(Исполнитель, ...) не компилируется с msvc-10,11,12
  • #9402test_excutor регрессия на msvc-10,11,12
  • #9404ex_make_future regression error
  • #9471Документация по синхронизации
  • #9535Отсутствие безопасности исключений может привести к аварии
  • #9618try_join_for problem: program is not end.
  • #9673компиляция потоков с MingW/gcc в Windows дает ошибки
  • #9708boost::condition_variable::timed_wait неожиданно просыпается, ожидая бесконечного
  • #9711Будущее продолжение названо дважды

Version 4.2.0 - boost 1.55

Знать жуков:

  • #2442Приложение статически связано с Boost. Тренд падает при установке Google Desktop (Windows XP)
  • #3926thread_specific_ptr + dlopen библиотека вызывает SIGSEGV.
  • #4833MinGW/test_tss_lib: Поддержка автоматической очистки tss для нативного потокового API недоступна
  • #6782call_once использует неправильный барьер, встроенный в Visual Studio
  • #7319Позаботьтесь о c++std-lib-32966 вопрос
  • #8600wait_for_any hangs, if call with multiple copys of shared_future
  • #9307будущее::fallback_to assert with ERRORRRRR boost: mutex lock failed in pthread_mutex_lock: Недействительный аргумент
  • #9308будущее: асинхронизация терпит неудачу с окончанием, называемым бросанием исключения, когда вызывается лямбда - кланг-дарвин-асан11
  • #9311ex_lambda_future выходит из строя на msvc-11.0
  • #9310test_4648_lib выходит из строя на clang-darwin-asan11

Пожалуйста, взгляните натест регрессии нитей, чтобы увидеть текущее состояние.

Несколько ограничений:

Существуют некоторые серьезные ошибки, которые препятствуют использованию библиотеки в конкретных контекстах, в частности:

  • на резьбе конкретного хранилища, препятствующего использованию библиотеки с динамическими библиотеками;
  • Экспериментальные особенности ускорения: будущее имеют некоторые серьезные отверстия, которые делают программу неожиданной.

Новые функции:

  • #8519Синхро: Обновить барьер класса с функцией завершения.
  • #8515Асинк: Добавить shared_future:
  • #8519Синхро: Барьер класса обновления с функцией завершения
  • #8615Заменить make_future/make_shared_future на make_ready_future.
  • #8627Асинк: Добавить Future<>::unwrap и unwrapping конструктор.
  • #8677Асынк: Добавить future<>::get_or.
  • #8678Асинк: Добавить future<>::fallback_to.
  • #8891upgrade_to_unique_lock: missing mutex() function.
  • #8955Запрос на более эффективный способ получения исключений из будущего.

Фиксированные жуки:

  • #7461Подробность::win32::ReleaseSemaphore может быть вызвана графой_to_release, равной 0
  • #8070Предпочитают GetTickCount64
  • #8768win32 condition_variable::wait_until infinite wait in rare cases.
  • #8817Boost Thread Windows CE _createthreadex handling breaks mingw w64.
  • #8943Не удалось скомпилировать код с помощью boost::call_once с Intel C++ Composer XE 2013 на Windows.
  • #8931Типы внешних_блокирующих ссылок.
  • #9029Опечатка в документации.
  • #9037gcc -Wshadow дает предупреждения в состоянии_variable{,_fwd}.hpp.
  • #9041Повышение. Возможно, Thread DSO придется связать с Boost. Атомный.
  • #9048boost::scoped_thread useless ctor с вариадными шаблонными аргументами.
  • #9079Переменная состояния будет ждать вечно в течение некоторого времени.

Version 4.1.0 - boost 1.54

Новые функции:

  • #7285С++11 соответствие: Разрешить передавать подвижные аргументы для call_once.
  • #7445Асынк: Добавить Future<>
  • #7449Синхро: Добавить синхронизированный класс

Фиксированные жуки:

  • #4878MinGW 4.5.0 неопределенная ссылка на bool interruptible_wait (деталь::win32::handle handle_to_wait_for,деталь::t imeout target_time).
  • #4882Win32 shared_mutex неправильно обрабатывает тайм-ауты.
  • #5752boost::call_once() ненадежен на некоторых платформах
  • #6652Boost.Thread shared_mutex.hpp:50:99: предупреждение: отказ от ссылки на указатель, пробитый шрифтом, нарушит строгие правила сглаживанияСтрогое сглаживание
  • #6843[Intel C++] Компиляция ошибок с помощью #include"
  • #6966Будущее повышение:: Будущее_категория непоследовательная связь
  • #7720Исключение lock_error при интенсивной блокировке/разблокировке mutex
  • #7755Нить: тупик с shared_mutex в Windows
  • #7980Ошибка построения: msvc-11.0 и BOOST_THREAD_DONT_USE_DATETIME
  • #7982pthread_delay_np() ошибка компиляции parm на AIX
  • #8027библиотека потоков не компилируется с Visual Studio 2003
  • #8070Предпочитают GetTickCount64
  • #8136boost::this_thread::sleep_for() спит дольше, чем должно в Windows
  • #8212Усилить ошибку компиляции потоков на Solaris 10
  • #8237исправить документацию для 'thread_group "
  • #8239барьер::wait() не отмечен как прерывание_point
  • #8323boost::thread::try_join_for/try_join_until может блокироваться бесконечно из-за сочетания проблем в Boost. Обсуждение Boost.Chrono
  • #8337Внутреннее представление "std::string(this->code()->message())" ускользает, но разрушается при выходе из области действия.
  • #8371C++11 Once_flag включен, когда constexpr недоступен
  • #8422Утверждение в win32::WaitForSingle Объект()
  • #8443Порядок включения файла заголовка может привести к сбоям
  • #8451Отсутствующая документированная функция 'boost::scoped_thread::joinable "
  • #8458-DBOOST_THREAD_DONT_USE_CHRONO в thread.obj.rsp, но не в явном виде
  • #8530[Общество] Неиспользуемая переменная thread_handle, неинициализированная переменная cond_mutex в thread/pthread/thread_data.hpp
  • #8550статическое связывание Boost. Скриншоты MFC-Dll
  • #8576«sur parolle» должно быть «sur parole».
  • #8596С поддержкой C++0x, boost::packaged_task хранит ссылку на функциональные объекты вместо копии.
  • #8626Реинтродуцировать BOOST_VERIFY на pthread_mutex_destroy return type
  • #8645Тайпо в строгом определении замка
  • #8671Обещание: set_..._at_thread_exit
  • #8672future<>::then(void()) doesn't works
  • #8674Фьючерсы как локальные объекты не могут быть возвращены с неявным движением.

Version 4.0.0 - boost 1.53

Устаревшие характеристики:

[Warning] Warning

Устаревшие функции с момента повышения 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 соответствие: Добавлять только функции, связанные с системой
  • #7280С++11 соответствие: Добавить обещание: ...at_read_exit
  • #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.
  • #7282C++11 соответствие: Добавить упакованную_задачу::make_ready_at_thread_exit
  • #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Предоставить переменную состояния с нулевой накладной производительностью.
  • #7444Async: Добавить make_future/make_shared_future.
  • #7540Нити: Добавьте класс помощников, которые присоединяются к нити на разрушение.
  • #7541Нити: Добавьте класс обертки, который присоединяется к разрушению.
  • #7575Соответствие C++11: Будущее, созданное асинком, должно «присоединиться» к деструктору.
  • #7587Синхро: Добавить strict_lock и nested_strict_lock.
  • #7588Синхро: Разделите locks.hpp на несколько файлов для ограничения зависимостей.
  • #7590Синхро: Добавьте блокируемые концептуальные шашки на основе Boost. Концептуальная проверка.
  • #7591Добавьте запираемые признаки, которые можно использовать с помощью функции enable_if.
  • #7592Синхро: Добавьте null_mutex, который является no-op и является моделью UpgardeLockable.
  • #7593Синхро: Добавьте класс с внешней блокировкой.
  • #7594Нити: Разрешите отключить прерывания потока.

Фиксированные жуки:

  • #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.
  • #7672lockable_traits.hpp синтаксическая ошибка: «определённая» ошибка токена.
  • #7798boost::future set_wait_callback thread issues safety.
  • #7808Неправильное описание эффектов для этой_ нити::sleep_for и этой_нити::sleep_until.
  • #7812Возвращается: cv_status::no_timeout, если звонок возвращается, потому что период времени, указанный rel_time, истек, cv_status::timeout иначе.
  • #7874компилируйте предупреждение: thread.hpp:342: предупреждение: атрибуты типа почитаются только при определении типа.
  • #7875BOOST_THREAD_THROW_IF_PRECONDITION_NOT_SATISFIED Не должно быть включено по умолчанию.
  • #7882неправильный текст исключения из condition_variable::wait(unique_lock&).
  • #7890резьба::do_try_join_until() отсутствует тип возврата.

Version 3.1.0 - boost 1.52

Устаревшие особенности:

Устаревшие функции с момента повышения 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: документный характер ключа, сложность и обоснование.
  • #4710C++11 compliance: Missing async().
  • #7283С++11 соответствие: Добавить notify_all_at_thread_exit
  • #7345С++11 соответствие: Добавьте рекурсивный mutex try_lock.

Фиксированные жуки:

  • #2797Две проблемы с thread_specific_ptr.
  • #5274не удалось скомпилировать future.hpp со stlport 5.1.5 под msvc8.1 из-за неопределенного класса.
  • #5431ошибка компиляции в Windows CE 6.0
  • #5696win32 деталь::set_tss_data ничего не делает, когда tss_cleanup_функция NULL.
  • #6931mutex с Intel C++ Compiler XE 12.1.5.344 Build 20120612
  • #7045Библиотека потоков не автоматически собирает дату_время.
  • #7173неправильное имя функции interrupt_point().
  • #7200Невозможно построить бустер. модульная нить.
  • #7220gcc 4.6.2 предупреждает о функциях inline+dllimport.
  • #7238This_thread::sleep_for() не отвечает на прерывание().
  • #7245Незначительные опечатки в документации, относящейся к версии 3.
  • #7272win32/thread_primitives.hpp: (Необязательно) Предупреждение.
  • #7284Уточните, что нет приоритета доступа между блокировкой и Shared_lock на Shared mutex.
  • #7329boost/thread/future.hpp не компилируется на HPUX.
  • #7336BOOST_THREAD_DONT_USE_SYSTEM Не работает.
  • #7349упакованная_задача содержит ссылку на временную.
  • #7350Аллокатор_деструктор не уничтожает объект
  • #7360Утечка памяти в реализации pthread boost::thread_specific_ptr
  • #7370Повышение. Объемная документация
  • #7438Неисправность сегментации в тесте_once регрессионном тесте в group.join_all();
  • #7461Подробность::win32::ReleaseSemaphore может быть вызвана графой_to_release, равной 0
  • #7499call_once не звонит ни разу

Version 3.0.1 - boost 1.51

Устаревшие особенности:

Устаревшие функции с момента повышения 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.
  • #6931mutex с Intel Compiler и /debug:parallel
  • #7044повышение 1,50,0 заголовок отсутствует.
  • #7052Нить: BOOST_THREAD_PROVIDES_DEPRECATED_FEATURES_SINCE_V3_0_0 маскирует только нить::operator==, thread::operator!= forward declarations, not definitions.
  • #7066Попытка исправить порядок статической инициализации current_thread_tls_key.
  • #7074Умноженное обозначение boost::allocator_arg.
  • #7078Тривиальное 64-разрядное исправление предупреждения на Windows для размера стека атрибутов потока
  • #7089BOOST_THREAD_WAIT_BUG ограничивает функциональность

Version 3.0.0 - boost 1.50

Переломные изменения при BOOST_THREAD_VERSION==3:

  • #6229Переломные изменения: Переименуйте уникальный_будущее в будущее после c++11.
  • #6266Переломное изменение: разрушитель резьбы должен вызывать прекращение при соединении.
  • #6269Разрывное изменение: назначение перемещения потока должно вызывать прекращение при соединении.

Новые особенности:

  • #1850Запрос на разблокировку_guard для комплимента lock_guard.
  • #2637Запрос на совместно используемую_mutex продолжительность timed_lock и timed_lock_shared.
  • #2741Предложение по управлению переносными и непортативными атрибутами потоков.
  • #3567Обсуждение Shared_lock_guard
  • #6194Адаптация к Boost.Move.
  • #6195c++11 соответствие: Предоставьте стандартный интерфейс, связанный со временем, с помощью Boost. Хроно.
  • #6217Увеличить рост. Общий интерфейс mutex после предложения Говарда Хиннана.
  • #6224c++11 соответствие: Добавьте использование стандарта, за исключением компиляторов, поддерживающих их.
  • #6225Добавить использование стандартных = удалить неисправные операции на компиляторах, поддерживающих их.
  • #6226c++11 соответствие: Добавьте явное преобразование болтов из замков.
  • #6228Добавьте конструктор обещаний с распределителем в соответствии со стандартом c++11.
  • #6230c++11 соответствие: Следует механизму отчетности об исключениях, как определено в c++11.
  • #6231Добавить требования BasicLockable в документацию для следования c++11.
  • #6272c++11 соответствие: Добавить поток::id специализация хеш.
  • #6273c++11 соответствие: Добавить класс cv_status enum и использовать его в условиях функции ожидания.
  • #6342c++11 соответствие: Адаптация one_flag к интерфейсу c++11.
  • #6671upgrade_lock: недостающие функции mutex и release.
  • #6672upgrade_lock:: недостающие конструкторы из временных типов.
  • #6675update_lock:: missing non-member swap.
  • #6676Преобразование блокировки должно быть явным.
  • Добавлены недостающие упакованные_задачи::result_type и упакованные_задачи:: конструктор с распределителем.
  • Добавлено packaged_task::reset()

Фиксированные жуки:

  • #2380boost::move from lvalue не работает с gcc.
  • #2430shared_mutex для win32 не имеет времени_lock_upgrade.
  • #2575Bug-Boost 1.36.0 на платформе Itanium.
  • #3160Дублированный учебный код в ускорении::thread.
  • #4345поток::id и проблема соединения с каскадом нитей.
  • #4521Ошибка с помощью boost::move on packaged_task (MSVC 10).
  • #4711Необходимо использовать детали реализации для возврата типов только для перемещения.
  • #4921BOOST_THREAD_USE_DLL и BOOST_THREAD_USE_LIB имеют решающее значение и должны быть задокументированы.
  • #5013документация: boost::thread: pthreas_exit causes end().
  • #5173Повышение::this_thread::get_id очень медленно.
  • #5351прервать будущее получить повышение:: неизвестен_исключение.
  • #5516Замок обновления не приобретается, когда предыдущий замок обновления освобождается, если присутствует другой замок чтения.
  • #5990shared_future::get() имеет неправильный тип возврата.
  • #6174упакованная задача неправильно обрабатывает результаты перемещения.
  • #6222Ошибка компиляции с SunStudio: уникальный_будущий ход.
  • #6354PGI: поддержка потоков компилятора не включена.
  • #6673shared_lock: назначение движения не работает с c++11.
  • #6674shared_mutex: try_lock_upgrade_until не работает.
  • #6908Ошибка компиляции из-за незащищенных определений _WIN32_WINNT и WINVER.
  • #6940TIME_UTC является макросом в C11.
  • #6959Звонок Абса неоднозначен.
  • Исправление проблемы, сигнализированной на ML с помощью task_object(task_object const&) в присутствии task_object(task_object &&)

Version 2.1.1 - boost 1.49

Фиксированные жуки:

  • #2309Отсутствие поддержки видимости символа g++ в Boost. Нить.
  • #2639документация должна быть расширена (defer_lock, try_to_lock, ...).
  • #3639Повышение. Thread не поддерживает Sun-5.9 в Linux.
  • #3762Нить не может быть скомпилирована с помощью winscw (Codewarrior от Nokia).
  • #3885документ о смешанном использовании импульса. Нить и родная нить api.
  • #3975Неправильное предварительное условие обещания::set_wait_callback().
  • #4048поток::id форматирование включает локализацию
  • #4315gcc 4.4 Предупреждение: inline... заявлено как dllimport: атрибут проигнорирован.
  • #4480Пластыри OpenVMS для обходных путей компилятора.
  • #4819повышение. Опечатки документов нити.
  • #5423проблемы с потоком C++0x.
  • #5617boost::thread::id copy ctor.
  • #5739множество, но не использованных предупреждений с gcc-4.6.
  • #5826threads.cpp: утечка ресурсов при сбое создания потоков.
  • #5839thread.cpp: Утечка ThreadProxy в исключениях.
  • #5859win32 shared_mutex конструктор утечек по исключениям.
  • #6100Вычислить аппаратное обеспечение_concurrency() с использованием get_nprocs() на системах GLIBC.
  • #6168recursive_mutex использует неправильный символ конфигурации (возможная опечатка).
  • #6175Ошибка компиляции с SunStudio.
  • #6200патч, чтобы иметь изменяемое состояние и ошибку mutex лучше обрабатывать EINTR.
  • #6207Shared_lock swap compiler error on clang 3.0 c++11.
  • #6208Try_lock_wrapper swap compiler error on clang 3.0 c++11.

Version 2.1.0 - Changes since boost 1.40

Выпуск 1.41.0 Boost добавляет фьючерсы в библиотеку потоков. Есть также несколько незначительных изменений.

Changes since boost 1.35

Выпуск 1.36.0 Boost включает в себя несколько новых функций в библиотеке потоков:

  • Новые общие<lock()>и<try_lock()>функции для блокировки нескольких мутекс одновременно.
  • Справочная поддержка Rvalue для семантики перемещения, где компиляторы поддерживают ее.
  • Добавлено несколько исправленных ошибок и отсутствующих функций (включая серьезную ошибку переменной состояния win32).
  • <scoped_try_lock>типы теперь обратно совместимы с Boost 1.34.0 и предыдущими выпусками.
  • Поддержка передачи аргументов функции в функцию потока путем подачи дополнительных аргументов в<boost::thread>Конструктор.
  • Перегрузки обратной совместимости, добавленные для функций<timed_lock>и<timed_wait>, позволяют использовать<xtime>для тайм-аутов.

Version 2.0.0 - Changes since boost 1.34

Почти каждая строка кода вBoost.Threadбыла изменена с момента выпуска 1.34. Однако большинство изменений интерфейса были расширениями, поэтому новый код в значительной степени обратно совместим со старым кодом. Новые функции и изменения описаны ниже.

New Features

  • Средства<boost::thread>и различных типов замков теперь подвижны.
  • Нити могут прерываться вточках прерывания.
  • Переменные состояния теперь могут использоваться с любым типом, который реализует концепцию<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()>функции-члены, которые используются типами блокировки.

Breaking Changes

Приведенный ниже список должен охватывать все изменения в общедоступном интерфейсе, которые нарушают обратную совместимость.

  • <boost::try_mutex>был удален, и функциональность, включенная в<boost::mutex>.<boost::try_mutex>, оставлена как<typedef>, но больше не является отдельным классом.
  • <boost::recursive_try_mutex>был удален, и функциональность, включенная в<boost::recursive_mutex>.<boost::recursive_try_mutex>, осталась как<typedef>, но больше не является отдельным классом.
  • <boost::detail::thread::lock_ops>был удален. Код, основанный на деталях реализации<lock_ops>, больше не будет работать, поскольку он был удален, так как больше нет необходимости в том, что типы мутексов теперь являются общедоступными<lock()>и.<unlock()>Функции членов.
  • <scoped_lock>Конструкторы со вторым параметром типа<bool>больше не предусмотрены. С предыдущими релизами ускорения<
    boost::mutex::scoped_locksome_lock(some_mutex,false);
    >можно было использовать для создания объекта блокировки, который был связан с мутексом, но не блокировал его на конструкции. Этот объект теперь заменен конструктором, который принимает второй параметр<boost::defer_lock_type>:<
    boost::mutex::scoped_locksome_lock(some_mutex,boost::defer_lock);
    >
  • Функция<locked()>членов типов<scoped_lock>была переименована в<owns_lock()>.
  • Вы больше не можете получить<boost::thread>экземпляр, представляющий текущую нить: объект, построенный по умолчанию<boost::thread>, не связан с какой-либо нитью. Единственным применением для такого объекта резьбы была поддержка операторов сравнения: эта функциональность была перенесена на<boost::thread::id>.
  • Сломанный<boost::read_write_mutex>был заменен<boost::shared_mutex>.
  • <boost::mutex>теперь никогда не является рекурсивным. Для релизов Boost до 1.35<boost::mutex>был рекурсивным на Windows, а не на платформах POSIX.
  • При использовании<boost::recursive_mutex>с вызовом<boost::condition_variable_any::wait()>мутекс разблокируется только на одном уровне, а не полностью. Это предыдущее поведение не было гарантировано и не было включено в тесты.

PrevUpHomeNext

Статья History раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 35. Thread 4.7.1 может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 35. Thread 4.7.1 ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:28:37/0.024730920791626/1