c++ 并行和同步

future,promise,packaged_task,async封装程度递增。

1. future,promise

2. packaged_task,async  隐藏promise提供更高层次的用户接口,用户可以不关心promise。

3. async 在packaged_task基础上隐藏thread创建过程。

注:

1)std::packaged_task::reset()

Resets the state abandoning the results of previous executions. New shared state is constructed.

调用该函数,可以清单上次的state,从而再次使用之前的packaged task

2)std::async  policy参数、

· std::launch::async 函数在其他线程直接执行

· std::launch::deferred  当用future.get()获取结果时,才会去执行,函数将在当前线程上执行,这基本上是单线程延迟求值(single-threaded lazy evaluation)策略

· std::launch::async | std::launch::deferred  该种策略或为不指定时的默认情况,取决于系统和库的实现,后者通常针对系统中并发性的当前可用性进行优化

Parameters

f-Callable object to call
args...-parameters to pass to f
policy-bitmask value, where individual bits control the allowed methods of execution
BitExplanation
std::launch::asyncenable asynchronous evaluation
std::launch::deferredenable lazy evaluation
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值