方法一:
#include <iostream>
#include <future>
using namespace std;
//Lambda表达式
auto F = [](char const* s)
{
for(int i = 0; i < 100; ++i)
{
cout << s;
cout.flush();//确保每次输出不缓存,直接输出到屏幕
}
};
int main()
{
//小张,你到门口持续叫“呜”
std::future <void> future_1 = std::async(std::launch::async, F, "呜");
//小李,你到门口持续叫"哦"
std::future <void> future_2 = std::async(std::launch::deferred, F, "哦");
//领导我负责就地持续叫“哇”
F("哇");
future_1.get();
future_2.get();
return 0;
}
方法二:
#include <iostream>
#include <future>
using namespace std;
int main()
{
//小张,你到门口持续叫“呜”
std::future <void> future_1 = std::async(std::launch::async, []()
{
for(int i = 0; i < 100; ++i)
{
cout << "呜";
cout.flush(); //确保每次输出不缓存,直接输出到屏幕
}
});
//小李,你到门口持续叫“哦”
auto future_2 = std::async(std::launch::deferred, []()
{
for(int i = 0; i < 100; ++i)
{
cout << "哦";
cout.flush();
}
});
//领导我负责就地持续叫“哇”
for(int i = 0; i < 100; ++i)
{
cout << "哇";
cout.flush();
}
future_1.get();
future_2.get();
return 0;
}
方法三:
#include <iostream>
#include <future>
using namespace std;
int main()
{
string s1 = "呜";
string s2 = "哦";
//小张,你到门口持续叫“呜”
std::future <void> future_1 = std::async(std::launch::async, [s1]()
{
for(int i = 0; i < 100; ++i)
{
cout << s1;
cout.flush(); //确保每次输出不缓存,直接输出到屏幕
}
});
//小李,你到门口持续叫“哦”
auto future_2 = std::async(std::launch::deferred, [s2]()
{
for(int i = 0; i < 100; ++i)
{
cout << s2;
cout.flush();
}
});
//领导我负责就地持续叫“哇”
for(int i = 0; i < 100; ++i)
{
cout << "哇";
cout.flush();
}
future_1.get();
future_2.get();
return 0;
}