¿Qué es std::jthread en c++ 20?

2 minutos de lectura
  1. ¿Qué ventajas ofrece sobre std::thread?
  2. ¿Despreciará el existente? std::thread?

std::jthread es como std::thread, solo que sin la estupidez. Ver, std::threadEl destructor terminaría el programa si no lo hicieras. join o separarlo manualmente de antemano. Esto condujo a toneladas de errores, ya que la gente esperaría que se uniera a la destrucción.

jthread arregla esto; se une en la destrucción de forma predeterminada (de ahí el nombre: “subproceso de unión”). También admite un mecanismo para pedirle a un subproceso que detenga la ejecución, aunque esto no se aplica (también conocido como: no puede hacer otro hilo deja de ejecutarse).

En la actualidad, no hay ningún plan para desaprobar std::thread.

  • @Waqar: podría verlo de esa manera, pero no necesariamente se implementa de esa manera.

    – Nicolás Bolas

    11 de junio de 2020 a las 13:43

  • Me pregunto de quién fue la brillante idea de intentar incluir una función de suspensión de ejecución. Eso nunca funciona. No ha funcionado en ninguna parte en 30 años de hilos. Todos tendrán que usar sus propias variables de condición explícitas como siempre lo han hecho.

    – Zan Lince

    11 de junio de 2020 a las 13:44

  • > admite un mecanismo para pedirle a un hilo que detenga la ejecución, supongo que te refieres stop_source aquí, si es así, ¿cómo se vería eso en el código?

    – Waqar

    11 de junio de 2020 a las 13:44

  • @ZanLynx eso tiene una variable de condición explícita, que pasa a la función que ejecuta.

    – Caleth

    11 de junio de 2020 a las 13:58

  • @Waqar tomas un std::stop_token como el primer parámetro de su función, y verifique periódicamente si stop_requested es verdad

    – Caleth

    11/06/2020 a las 14:00

¿Ha sido útil esta solución?