void
/task<void>
здесь особый случай, потому что вы можете волшебно использовать void
из ниоткуда. Вы не могли сделать то же самое с int
, std::string
или подобными.
void Bob()
{
create_task() { /* do stuff */ }.then([](){ /* do more stuff */ });
}
После того, как это вернулось, /* do stuff */
и /* do more stuff */
запустились, и любой дескриптор их хода отбрасывается.
task<void> Bob()
{
return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ });
}
После того, как это вернулось, /* do stuff */
и /* do more stuff */
запустились, и у вас есть дескриптор, чтобы дождаться их завершения.
int Alice()
{
return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ return 42; }).get();
}
После того, как это вернулось, /* do stuff */
и /* do more stuff */
завершили и стали доступны окончательные результаты.
task<int> Alice()
{
return create_task() { /* do stuff */ }.then([](){ /* do more stuff */ return 42; });
}
После того, как это вернулось, /* do stuff */
и /* do more stuff */
запустились, и у вас есть дескриптор, чтобы дождаться их завершения и получить результат.
person
Caleth
schedule
10.04.2018
task
и как оно используется в вашем приложении. - person R Sahu   schedule 10.04.2018Task
также можно использовать для дальнейших продолжений? - person Richard Chambers   schedule 10.04.2018