自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 C++11 async、future、packaged_task、promise

std::future是一个类模板std::async 是一个函数模板作用:启动一个异步任务,启动起来之后返回一个std::future对象什么是“启动一个异步任务‘?自动创建一个线程并且开始执行对应的线程入口函数,它返回一个std::future对象,这个对象里面就包含线程入口函数所返回的接口(线程返回的结果),可以通过调用future对象的成员函数get函数来获取。

2023-12-26 15:48:09 1041 1

原创 C++11并发编程条件变量condition_variable

condition_variable条件变量是一个类成员函数:wait()第一个参数是unqinue_lock对象,第二个参数存在默认值当wait()不存在第二个参数的时候,则会阻塞到本行并且对互斥量进行解锁,直到其他线程调用notify_one,当notify_one()被调用时,wait()函数尝试加锁,若加锁不成功,则会阻塞,加锁成功,就继续向下执行。

2023-12-25 21:57:10 422

原创 单例设计模式共享数据

功能:保证函数a()只会被调用一次;具备互斥量这种能力,比互斥量消耗的资源更少;需要结合一个标记使用std::once_flag在函数被调用后,标志位就会标记函数已经是被调用状态。

2023-12-25 17:04:20 350

原创 C++单线程的单例模式

注意懒汉模式是在多线程下需要加锁防止多次创建对象的,不能直接在cSingle的析构函数内执行delete的原因是delete会调用对象的析构函数,这样会导致死递归导致程序异常。

2023-12-22 23:43:50 374

原创 C++11多线程互斥量用法(二)

在unique_lock缺省参数的情况下,unique_lock和lock_guard的作用相同,但是效率差一点,内存占多一点,但是在存在参数的情况下,unique_lock更加的灵活。

2023-12-22 17:38:21 869

原创 C++11多线程互斥量用法(一)

观察可以发现,并非先创建的线程就先执行,执行的顺序是由操作系统控制的,可能在一个线程未执行完时,时间片时间消耗完,线程停止,多个线程的执行顺序是随机的。

2023-12-21 22:09:17 395

原创 C++11线程传递参数的陷阱

可以看到子线程和主线程中var的地址不同,str的地址相同,那var是用引用传递的为什么会出现地址不一样,是因为thread内部对var进行了复制而不是引用传递,需要引用传递需要使用std::ref来解决这样主线程和子线程的var地址就相同了,但仍存在问题,如果将join换为detach,主线程和子线程分离,则会存在主线程执行完毕,局部变量空间呗操作系统回收,子线程在操作时,就会发生异常,所有要谨慎使用detach。

2023-12-21 16:30:17 348

原创 C++11创建线程的方法

`

2023-12-21 15:22:41 505

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除