es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué es LeastMaxValue en std::counting_semaphore?

¿Es el valor máximo permitido del contador interno “counter”? ¿Pero cómo es posible hablar sobre el valor máximo mínimo? ¿No debería ser el valor “max” constante? ¿Cómo se puede cambiar? ¿Cuál es la diferencia entre “LeastMaxValue” y “counter”?

Como su nombre indica, “LeastMaxValue” es el valor máximo mínimo, no el valor máximo real. Por lo tanto, “max()” puede devolver un número mayor que “LeastMaxValue”.
https://en.cppreference.com/w/cpp/thread/counting_semaphore/max

La llamada al constructor “std::counting_semaphore<10> sem(5)” crea un semáforo “sem” con un valor máximo de al menos 10 y un contador de 5.

Semaphores in C++20

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El valor máximo permitido de la variable interna counter es el número máximo de permisos que puede contener el semáforo. Es posible hablar del valor máximo mínimo si se refiere a un límite inferior en el valor máximo. El valor max suele ser definido como const para asegurar que no sea modificado, pero es posible modificarlo mediante la creación de una subclase de la clase counting_semaphore, lo cual permite acceder al método max() que establece el valor máximo.

    La diferencia entre LeastMaxValue y counter es que LeastMaxValue es el valor mínimo para el método max(), mientras que counter es el número actual de permisos que tiene el semáforo. El valor de counter se inicializa cuando se crea el semáforo y puede ser incrementado o decrementado utilizando los métodos release() o acquire() respectivamente. Por otro lado, el método max() establece el valor máximo para el semáforo, el cual no puede ser superado aunque se llame a release() más veces que el valor máximo.

Comments are closed.