0
点赞
收藏
分享

微信扫一扫

[多线程]async异步操作的使用实例及不同策略的对比

彩虹_bd07 2022-06-13 阅读 65

 

#include <iostream>
#include <thread>
#include <mutex>

#include <iostream> // std::cout, std::endl
#include <future> // std::async, std::future
#include <chrono> // seconds
using namespace std::chrono;

int main() {
auto print = [](char c) {
for (int i = 0; i < 10; i++) {
std::cout << c;
std::cout.flush();
std::this_thread::sleep_for(milliseconds(1));
}
};
// 不同launch策略的效果
std::launch policies[] = {std::launch::async, std::launch::deferred};
const char *names[] = {"async ", "deferred"};
for (int i = 0; i < sizeof(policies)/sizeof(policies[0]); i++) {
std::cout << names[i] << ": ";
std::cout.flush();
auto f1 = std::async(policies[i], print, '+');
auto f2 = std::async(policies[i], print, '-');
f1.get();
f2.get();
std::cout << std::endl;
}

return 0;
}

[多线程]async异步操作的使用实例及不同策略的对比_#include

 

 

void fun1(char c){
for (int i = 0; i < 5; i++){
cout << c ;
std::this_thread::sleep_for(milliseconds(1));
}
}

void fun2(char c) {
for (int i = 0; i < 10; i++) {
cout << c ;
std::this_thread::sleep_for(milliseconds(1));
}
}


int main() {

auto f1 = std::async(std::launch::async, fun1, '+');
auto f2 = std::async(std::launch::async, fun2, '*');
f1.get();
f2.get();

return 0;
}

 


举报

相关推荐

0 条评论