ручная очистка потоковых ресурсов в boost :: thread

Статическая библиотека ускоренного потока не может использоваться с кодом C ++ / CLI, поскольку она использует обратные вызовы локального хранилища потока для очистки данных, специфичных для потока. Можно отключить эти обратные вызовы, исключив tss_pe.obj при сборке библиотек boost, что позволяет использовать библиотеку в управляемом коде, но означает, что эти ресурсы необходимо очищать вручную.

Ничего из этого официально не задокументировано, но я собрал воедино из разных ошибок / сообщений на форуме (например, https://svn.boost.org/trac/boost/ticket/1848) что эта ручная очистка требует:

  • вызов on_thread_exit () при выходе из потока «не управляется boost :: thread.» Мне неясно, что именно это означает, или почему поток Boost будет отвечать за очистку ресурсов для потока, которым он не управляет.
  • возможно, также вызывая on_process_enter и on_process_exit в начале и в конце main ( http://lists.boost.org/Archives/boost/2007/11/130440.php ).

Как новый пользователь библиотеки, который раньше не работал с локальным хранилищем потоков, я хочу быть уверенным, что полностью понимаю эти краткие рекомендации. Я буду использовать поток поддержки из неуправляемого кода в COM DLL, которая также содержит пару управляемых классов.

Может ли кто-нибудь предоставить более подробное объяснение, с примерами, точных обстоятельств, при которых мне нужно вызывать вышеуказанные функции, чтобы избежать утечки ресурсов, когда автоматическая очистка отключена?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]