QT使用std::thread::get_id()显示线程ID

C++11中的多线程特性在跨平台上有很大的优势,QT当然也可以使用QThread等方法。

这里是在QT中得到线程 id 的方法:

#include <thread>
#include <QDebug>
#include <QString>    

//以下代码片段得到当前线程的id,并通过QT输出窗口输出调试信息

    std::thread::id id = std::this_thread::get_id();
    std::stringstream sin;
    sin << id;

    qDebug()<<"threadID : "<<QString::fromStdString(sin.str());

如果是使用控制台的话会简单很多,直接将id值cout就行了。

 

参考:https://blog.csdn.net/FlushHip/article/details/81902188

根据提供的引用内容,可以看出Qt是一个跨平台的C++应用程序开发框架,而std::thread是C++11标准库中的线程库。两者都可以用于多线程编程,但是使用方法和实现方式有所不同。 在Qt中,可以使用QThread类来创建和管理线程QThread类提供了一些虚函数,如run()、start()、wait()等,可以方便地实现线程的创建、启动和等待。此外,Qt还提供了信和槽机制,可以用于线程间的通信。 而在C++11标准库中,可以使用std::thread类来创建和管理线程std::thread类的使用方法与QThread类有所不同,需要传入一个可调用对象作为线程的入口函数,并且需要手动管理线程的启动和等待。此外,C++11标准库中也提供了一些同步原语,如mutex、condition_variable等,可以用于线程间的同步和通信。 下面是一个使用Qtstd::thread分别创建线程的例子: 使用Qt创建线程: ```cpp #include <QCoreApplication> #include <QThread> class MyThread : public QThread { public: virtual void run(); }; void MyThread::run() { for (int count = 0; count < 10; count++) { sleep(1); qDebug("ping %d", count); } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); MyThread thA; thA.start(); thA.wait(); puts("thread A is over."); return a.exec(); } ``` 使用std::thread创建线程: ```cpp #include <iostream> #include <thread> void thread_func() { for (int count = 0; count < 10; count++) { std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << "ping " << count << std::endl; } } int main() { std::thread thA(thread_func); thA.join(); std::cout << "thread A is over." << std::endl; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值