gpt4 book ai didi

multithreading - 来自非Qt线程的QThread::getCurrentThread()

转载 作者:行者123 更新时间:2023-12-03 23:47:02 25 4
gpt4 key购买 nike

如果从QThread::getCurrentThread()调用,我会从non-Qt thread中得到什么?

谢谢!

最佳答案

QThread只是一个包装,它在后台使用 native 线程。
QThread::currentThread创建并初始化Q(Adopted)Thread实例(如果尚不存在)。

如果是unix,则使用pthread

#include <iostream>
#include <thread>
#include <pthread.h>

#include <QThread>
#include <QDebug>

void run() {
QThread *thread = QThread::currentThread();

qDebug() << thread;
std::cout << QThread::currentThreadId() << std::endl;
std::cout << std::this_thread::get_id() << std::endl;
std::cout << pthread_self() << std::endl;

thread->sleep(1);
std::cout << "finished\n";
}

int main() {
std::thread t1(run);
t1.join();
}

输出:
QThread(0x7fce51410fd0) 
0x10edb6000
0x10edb6000
0x10edb6000
finished

我看到 there是Qt应用程序主线程的初始化:
data->threadId = (Qt::HANDLE)pthread_self();
if (!QCoreApplicationPrivate::theMainThread)
QCoreApplicationPrivate::theMainThread = data->thread;

因此可能会有一些副作用。

我建议不要将QThread与非Qt线程混合使用。

关于multithreading - 来自非Qt线程的QThread::getCurrentThread(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16207373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com