#include <future>
using namespace std;
void t1(promise<int> p)
{
this_thread::sleep_for(chrono::seconds(5));
p.set_value(0);
}
void t2(shared_ptr<promise<int>> p)
{
this_thread::sleep_for(chrono::seconds(5));
p->set_value(0);
}
future<int> f1()
{
promise<int> p;
async(t1, move(p));
return p.get_future();
}
future<int> f2()
{
auto p = make_shared<promise<int>>();
async(t2, p);
return p->get_future();
}
int main()
{
f1().get();
f2().get();
return 0;
}
Meine Frage ist:Wie man std :: promise in einen Thread übergibt? von std :: move oder von std :: shared_ptr?
Wie ein std::promise
Objekt in einen Thread passieren, von std::move
oder durch std::shared_ptr
?
Was ist besser?
Verwenden Sie das Versprechen im übergeordneten Thread anschließend? –
Nein. Ich werde es nicht nach dem Passieren verwenden. – xmllmx
Dann sehe ich keinen Bedarf für einen geteilten Zeiger, verschieben Sie ihn einfach. –