C++ 异步任务取消机制:手动实现与协作式取消

各位观众,大家好!今天咱们来聊聊C++异步任务取消这档子事儿。这玩意儿听起来高大上,其实就是告诉你的程序:“喂,别忙活了,停下!咱换个活儿干!”

取消异步任务,是个非常现实的需求。想象一下:你打开一个网页,页面开始加载,结果网速慢得像蜗牛爬。你一怒之下点了刷新,或者干脆关了页面。如果程序不知道你已经取消了操作,还在吭哧吭哧地加载,那得多浪费资源啊!

C++标准本身并没有提供直接的、一劳永逸的异步任务取消机制。这就意味着,我们需要自己动手,丰衣足食。咱们今天就来看看两种常见的实现方式:手动实现和协作式取消。

第一种:手动实现,简单粗暴但有效

手动实现,顾名思义,就是你自己用一些标志位、条件变量等工具,来控制异步任务的生命周期。这方法简单直接,但也需要你对代码有足够的掌控力。

#include <iostream>
#include <thread>
#include <chrono>
#include <atomic>

// 模拟一个耗时任务
void long_running_task(std::atomic<bool>& stop_flag) {
  for (int i = 0; i < 100; ++i) {
    // 检查是否需要停止
    if (stop_flag.load()) {
      std::cout << "任务被取消!在迭代 " << i << " 处停止。n";
      return; // 提前结束函数
    }

    std::cout 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值