c++ thread也挺好用的,也可以像qt thread那样,start启动,run函数为线程的实际运行代码。thread和this_thread方法不多,常用的就几个。
1.std::this_thread::get_id 获取线程id
2.yield,和sleep。yield,交出cpu占有权,一般可以放到多线程的循环里,减少cpu空转
3.一般代码构建完thread,线程跑起来detach一下,qt是默认会detach的。join实际代码一般不用,就主线程等待其他多个线程结束会用到下。
#include <thread>
class TestThread
{
public:
void start(){
thread t(std::bind(&TestThread::run,this));
t.detach();
}
void run(){
while (true){
cout << "test thread id:" << std::this_thread::get_id()<<endl;
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
}
}
};
void run(){
while (true){
cout << "function thread id:" << std::this_thread::get_id() << endl;
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
}
}
int main(void)
{
cout << "main thread id:" << std::this_thread::get_id() << endl;
TestThread testThread;
testThread.start();
thread funcThread(&run);
funcThread.detach();
getchar();
return 0;
}
本文介绍了C++11中std::thread的使用,包括如何像QT线程那样启动和运行线程,以及如何获取线程ID。重点讨论了std::this_thread::get_id、yield和sleep()函数在多线程编程中的应用。通常,线程创建后会detach以允许独立运行,join()主要在需要主线程等待其他线程结束时使用。
1011

被折叠的 条评论
为什么被折叠?



