@sitev_ru
sitev.ru - мой блог ...

Как в функции получить указатель на поток, который её вызвал?

Создаю поток (нить):

std::thread *thr = new std::thread(&MyClass::threadFunc, this);

Как теперь в функции MyClass::threadFunc() получить указатель на поток, который её вызвал?
  • Вопрос задан
  • 1593 просмотра
Пригласить эксперта
Ответы на вопрос 3
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
В стандартной библиотеке можно получить id потока. Можно постараться сравнить его с заранее сохранённым id.
std::this_thread::get_id()

В Qt можно получить указатель на поток например так:
static QThread * QThread::currentThread()
или узнать в каком потоке объект:
QThread * QObject::thread() const
Ответ написан
@DISaccount
Вы хотите внутри MyClass иметь указатель std::thread*?
-Сделайте этот указатель глобальным.
-Передайте указатель через метод класса MyClass.
-Сделайте глобальную функцию для доступа к этому указателю.
-Сделайте глобальный синглтон класс для доступа к этому указателю.
-Сделайте метод класса, который порождает этот самый поток, являющийся членом класса.
- etc.
Ответ написан
AxisPod
@AxisPod
По сути никак, но зачем это вообще может понадобиться? Для поспать есть std::this_thread. Ну а вызывать методы объекта потока из самого же потока довольно бредово.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы