Maison  >  Article  >  développement back-end  >  Pourquoi ne puis-je pas transmettre des références non-const à `std::async` ?

Pourquoi ne puis-je pas transmettre des références non-const à `std::async` ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 06:32:30725parcourir

Why Can't I Pass Non-Const References to `std::async`?

Passer des références non-const à std::async

Dans std::async, passer une référence non-const en tant qu'argument dans une erreur. Il s'agit d'un choix de conception délibéré.

Justification

Déterminer si un objet fonction accepte ses arguments par référence n'est pas toujours réalisable. Ainsi, std::async doit soit copier tous les arguments, soit les accepter par référence. La copie des arguments garantit la sécurité car ils ne peuvent pas devenir suspendus ou provoquer des conditions de concurrence.

Exception : std::ref

Pour autoriser les paramètres de référence non const, std::ref peut être utilisé. Il s'agit d'une adhésion explicite à une sémantique de référence potentiellement dangereuse, nécessitant une gestion prudente des références en suspens et des conditions de concurrence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn