This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Resolved status.

2856. std::async should be marked as [[nodiscard]]

Section: 32.10.9 [futures.async] Status: Resolved Submitter: Andrey Davydov Opened: 2017-01-20 Last modified: 2020-09-06

Priority: 2

View other active issues in [futures.async].

View all other issues in [futures.async].

View all issues with Resolved status.

Discussion:

Because the destructor of the std::future returned from the std::async blocks until the asynchronous operation completes, discarding the std::async return value leads to the synchronous code execution, which is pointless. For example, in the following code

void task1();
void task2();

void foo()
{
  std::async(std::launch::async,  task1),
  std::async(std::launch::async,  task2);
}

void bar()
{
  std::async(std::launch::async,  task1);
  std::async(std::launch::async,  task2);
}

task1 and task2 will be concurrently executed in the function 'foo', but sequentially in the function 'bar'.

[2017-01-27 Telecon]

Priority 2; Nico to provide wording.

[2017-03-04, Kona]

This should be handled by Nico's paper P0600.

Proposed resolution:

Resolved by adoption of P0600 in Albuquerque

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy