【C++】C++11下线程库

03-15 1070阅读 0评论

C++11下线程库

  • 1. thread类的简单介绍
  • 2.线程函数参数
  • 3.原子性操作库(atomic)
  • 4.mutex的种类
  • 5. RAII风格加锁解锁
    • 5.1Lock_guard
    • 5.2unique_lock
    • 6.condition_variable

      1. thread类的简单介绍

      在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含头文件。

      【C++】C++11下线程库,【C++】C++11下线程库,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,管理,第1张
      (图片来源网络,侵删)

      C++11中线程类

      还有一些和线程有关的锁、条件变量、原子操作等。

      【C++】C++11下线程库

      C++11线程库本质是对不同平台的线程库进行封装。

      先看看线程相关主要的接口

      【C++】C++11下线程库

      【C++】C++11下线程库,【C++】C++11下线程库,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,管理,第4张
      (图片来源网络,侵删)
      函数名功能
      thread()构造一个线程对象,没有关联任何线程函数,即没有启动任何线程
      thread(fn,args1, args2,…)构造一个线程对象,并关联线程函数fn,args1,args2,…为线程函数的参数
      get_id()获取线程id
      jionable()线程是否还在执行,joinable代表的是一个正在执行中的线程。
      jion()该函数调用后会阻塞住线程,当该线程结束后,主线程继续执行
      detach()在创建线程对象后马上调用,用于把被创建线程与线程对象分离开,分离的线程变为后台线程,创建的线程的"死活"就与主线程无关

      【C++】C++11下线程库

      线程不允许拷贝构造,但支持移动构造。

      【C++】C++11下线程库

      也不允许赋值重载。但支持移动赋值。

      注意:

      1.线程是操作系统中的一个概念,线程对象可以关联一个线程,用来控制线程以及获取线程的状态。

      【C++】C++11下线程库,【C++】C++11下线程库,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,使用,访问,管理,第7张
      (图片来源网络,侵删)

      2.当创建一个线程对象后,没有提供线程函数,该对象实际没有对应任何线程。

      int main()
      {
      	thread t1;
      	return 0;
      }
      

      3.当创建一个线程对象后,并且给线程关联线程函数,该线程就被启动,与主线程一起运行。

      线程函数一般情况下可按照以下三种方式提供:

      • 函数指针
      • lambda表达式
      • 函数对象
        void ThreadFunc(int a)
        {
        	cout 
        public:
        	void operator()()
        	{
        		cout 
        	// 线程函数为函数指针
        	thread t1(ThreadFunc, 10);
        	// 线程函数为lambda表达式
        	thread t2([] {cout 
        	int n,m;
        	cinnm;
        	vector
        		//移动赋值
        		t = thread([m] {
        				for (size_t i = 0; i 

免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,1070人围观)

还没有评论,来说两句吧...

目录[+]