当前位置: 首页 > wzjs >正文

一个网站不兼容ie怎么做广州疫情最新动态

一个网站不兼容ie怎么做,广州疫情最新动态,电商网站的需求文档,洛阳室内设计公司排名创建线程对象: //无参构造,该线程对象没有关联任何线程函数,也就是它没有启动任何线程:thread t1;//... t1 thread(func, 10);//移动构造(调用移动赋值函数)t1.join();//含参构造thread t1(func1, 1, 10);//thread 提…
  • 创建线程对象:
  //无参构造,该线程对象没有关联任何线程函数,也就是它没有启动任何线程:thread t1;//... t1 = thread(func, 10);//移动构造(调用移动赋值函数)t1.join();//含参构造thread t1(func1, 1, 10);//thread 提供了移动构造函数,能够用一个右值线程对象来构造一个线程对象,以下两种都是 移动构造:thread t3 = thread(func, 4, 20);   // 创建匿名函数对象,赋值给 t3 (调用移动赋值函数)thread t4(std::move(thread(func, 10, 20))); // 显式move (调用移动构造函数)
  • 成员函数:

    join和detach都用于回收线程资源

    • join 函数

      • 功能是 连接一个已经终止的线程,并回收它的资源(调用一次,只能回收一个线程)。

      • 阻塞函数:调用它的线程会一直阻塞,直到 对应的线程终止 并被 join 函数回收,原线程才会继续执行

      • 任意一个线程都可以使用 join 来回收其他线程,但一般在主线程中使用

  #include <iostream>#include <thread>using namespace std;void func(){for(int i = -10; i > -20; i--){cout << "from func():" << i << endl;}}int main()			//主线程{thread t(func);	//子线程t.join();		//等待子线程结束后才进入主线程cout << "mian()" << endl;cout << "mian()" << endl;cout << "mian()" << endl;return 0;}
  • detach函数

    • 功能是 分离一个线程,也就是当 调用detach的线程对象终止时,它的资源会自动 被系统回收,而不是被其他线程回收。

    • 非阻塞地回收线程

  #include <iostream>#include <thread>using namespace std;void func(){for(int i = -10; i > -20; i--){cout << "from func():" << i << endl;}}int main()			//主线程{cout << "mian()" << endl;cout << "mian()" << endl;cout << "mian()" << endl;thread t(func);	//子线程t.detach();		//分离子线程,让系统自动回收return 0;}
  • joinable函数:

    • bool类型函数,它会表示当前的线程是否是可执行线程(能被join或者detach)
      • 1 -> 表示可以join或者detach
      • 0 -> 表示已经可以join或者detach,不可再重复回收了
    • 可以通过 joinable()函数 判断线程是否是有效的,如果是以下任意情况,则线程无效:
      • 线程对象没有关联函数
      • 线程对象的状态已经转移给其他线程对象
      • 线程已经调用join 或者detach结束

在这里插入图片描述

  • 创建线程对象后,如果向启动线程的话,必须要提供线程关联函数。线程函数一般情况下可按照以下四种方式提供:
    • 函数指针
    • lambda表达式
    • 函数对象
    • 包装器(function)
void ThreadFunc(int a) {cout << "Thread1" << a << endl;
}void T()
{cout << "hello" << endl;
}class TF
{
public:void TT(){cout << "NI" << endl;}void operator()(){cout << "Thread3" << endl;}
};int main()
{// 线程函数为函数指针thread t1(ThreadFunc, 10);// 线程函数为lambda表达式thread t2([] {cout << "Thread2" << endl; });// 线程函数为函数对象TF tf;thread t3(tf);thread t5(&TF::TT, TF());//线程函数为包装器function<void()> t = T;thread t4(t);t1.join();t2.join();t3.join();t4.join();t5.join();cout << "Main thread!" << endl;return 0;
}
  • 禁止拷贝线程对象thread类 不允许拷贝构造以及赋值,但是可以移动构造和移动赋值,即一个线程对象关联的 线程的状态 转移给 其他线程对象,转移期间不影响线程的执行

  • 线程函数参数

    • 线程函数的参数是以 值拷贝 的方式 拷贝到线程栈空间中的,实际引用的是 线程栈中的拷贝,而不是外部实参。所以,即使参数是引用类型,最后也不能把改变后的结果带到外面
    • 注意:如果线程参数是类成员函数时,必须将this作为线程函数参数
http://www.dtcms.com/wzjs/498009.html

相关文章:

  • 动态网站开发表格的代码品牌网站建设哪家好
  • 2级a做爰片免费网站我想做网络推广找谁
  • 企业网站建设技巧软文营销策划
  • 摄影网站设计图片cpu游戏优化加速软件
  • 大家做网站都会去哪找素材大数据营销经典案例
  • 做网站的公司图企业网络推广的方法有哪些
  • 青海企业网站建设开发谷歌浏览器在线打开
  • 做物流的在什么网站找客户呢营销策划公司的经营范围
  • 动态网站开发实训心得seo优化报价公司
  • 做音乐网站要什么源码百度seo服务
  • 企业网站seo外包百度百科官网登录
  • 合作社网站模板海外社交媒体营销
  • 网站建设项目建议书怎么给公司做网站推广
  • 网站页面设计好了后台如何添加兰州网站seo诊断
  • 深圳公认的第一富人区丁的老头seo博客
  • 网站怎么用PS做国家卫健委最新疫情报告
  • 建设银行网上流览网站广告最多的网站
  • 办一个网站要多少钱国家免费职业技能培训
  • 顺德高端网站设计站长工具介绍
  • 企业网站建设有几种aso关键字优化
  • 潍坊建设网站的公司电话有效获客的六大渠道
  • 网站编辑人才队伍建设百度推广400客服电话
  • 徐州网站建设哪家好短视频营销常用平台有
  • 个人免费网站建站运营动态网站的制作与设计
  • web中英文网站怎么做百度服务电话
  • 最好的网站建设团队合肥网络推广
  • 网站登录注册怎么做的seo网站优化培训厂家报价
  • 网站建设开源项目github百度一下百度搜索网站
  • 中国城乡建设委员会官方网站营销网页
  • win10网站开发怎么测试不关键词搜索方法