欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

c++11 thread类的简单使用

发布时间:2023/12/15 c/c++ 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 c++11 thread类的简单使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一个thread对象就代表一个线程执行,当对象创建完成后,线程函数就开始执行,下面这段话是c++11的thread类介绍。

An initialized thread object represents an active thread of execution; Such a thread object is joinable, and has a unique thread id.

A default-constructed (non-initialized) thread object is not joinable, and its thread id is common for all non-joinable threads.

A joinable thread becomes not joinable if moved from, or if either join or detach are called on them.

需要注意的是:当一个线程对象是joinable状态时,对象在析构前需要使用detach或者jion函数。

现在写代码证实这段话,加深c++11 thread类的使用,具体代码如下:

#include "stdafx.h" #include <memory> #include <string> #include <iostream> #include <thread>void pause_thread(int nSleepTime) {//std::cout << "pause for: " << nSleepTime << "\n";std::this_thread::sleep_for(std::chrono::seconds(nSleepTime)); }int main() {//thread1和thread2 是初始化的线程对象,它是joinable状态并且有唯一的id;std::thread thread1(pause_thread, 1);std::thread thread2(pause_thread, 2);//thread3是未初始化的线程对象,它是非joinable状态,id不唯一std::thread thread3;//验证代码if (thread1.joinable()){std::cout <<"thread1 is joinable" << std::endl;}if (thread2.joinable()){std::cout << "thread2 is joinable" << std::endl;}if (!thread3.joinable()){std::cout << "thread3 is not joinable" << std::endl;}std::cout << "***********分割线*****************\n\n" << std::endl;std::cout << "thread1: " << thread1.get_id() << std::endl;std::cout << "thread2: " << thread2.get_id() << std::endl;std::cout << "thread3: " << thread3.get_id() << std::endl;//thread objects that are joinable shall either be joined// or detached before they are destroyed.thread1.join();thread2.detach();std::cout << "*************分割线****************\n\n" << std::endl;//A joinable thread becomes not joinable if moved from, //or if either join or detach are called on them.if (!thread1.joinable()){std::cout << "thread1 becomes not joinable" << std::endl;}if (!thread2.joinable()){std::cout << "thread2 becomes not joinable" << std::endl;}return 0; }

运行结果:

总结

以上是生活随笔为你收集整理的c++11 thread类的简单使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。