Доступ к запущенной теме

0

Я пишу плагин, который использует контекст GLEWMX. Плагин загружает контекст GLEWMX под идентификатором потока (1). Затем, когда я должен что-то запустить, он запускает эту задачу под идентификатором потока (2). У меня есть доступ к идентификаторам потоков.

Должен ли я переключать активный поток на поток (1) с помощью std: thread, чтобы я мог получать доступ и запускать вещи в этом контексте? Как это сделать

Теги:
multithreading
stdthread
glew

1 ответ

1

Да и нет. Некоторые библиотеки действительно ограничены работой в одном потоке, и я предполагаю, что GLEWMX является одним из них. Это действительно означает, что вы не должны называть его из потока 2.

Но когда вам нужно что-то сделанное потоком 1, вы не можете переключить "активный поток". На современных компьютерах все равно есть несколько активных потоков, поэтому факт, что поток 2 активен, даже не означает, что поток 1 является пассивным.

Правильное решение состоит в том, чтобы создать поточную рабочую очередь для потока 1. Затем поток 2 может работать, а поток 1 выбирает работу, когда готов. К сожалению, для этого нет поддержки стандартной библиотеки, вам придется сворачивать вместе. Используйте std::condition_variable и .wait в потоке 1.

  • 0
    Проблема, с которой я столкнулся, заключается в том, что моя программа Rhino создает все эти потоки, и у меня есть доступ только к идентификаторам потоков, но я не знаю, как получить доступ к тому, как потоки изначально создаются для создания рабочей очереди ... так что я просто подумал вызывая что-то в этой первой теме, но это был хороший ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню