• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

215
Vistas
¿Cómo el bloqueo injusto tiene un mejor rendimiento que el bloqueo justo?

Interface Lock tiene un parámetro de equidad booleano útil para garantizar la equidad en el bloqueo : el subproceso que espera el bloqueo por más tiempo, obtiene el bloqueo primero . Y pensé que quería usarlo en todas partes, ya que previene el hambre . Bueno, no sin antes leer que nos puede costar rendimiento.

No pude encontrar una respuesta a esta pregunta, así que espero que alguien pueda aclarar esto. Es decir, ¿cuál es la diferencia entre tomar hilos que "honran" la equidad y hilos que no lo hacen? ¿No están ambos almacenados en una cola "ordinaria" donde están otros hilos en espera?

about 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Cuando se libera un bloqueo, y cuando más de un subproceso lo está esperando, el subproceso que ha estado esperando más tiempo es el que tiene más probabilidades de encontrar que las páginas de memoria que va a querer se han intercambiado mientras estaba "dormido". El subproceso que ha estado inactivo durante la menor cantidad de tiempo es el que tiene más probabilidades de estar "listo para funcionar".


Disculpas a @xingbin si eso es lo que intentabas decir.

about 3 years ago · Santiago Trujillo Denunciar

0

En primer lugar, no es la interface Lock la que tiene esa fairness , sino ReentrantLock .

Es posible que los subprocesos que emiten Lock::lock no se pongan en cola, ya sea en modo fair o unfair .

El modo unfair es un poco más fácil de entender. En este modo, el subproceso que solicita el bloqueo (llamando a Lock::lock ), intenta obtenerlo inmediatamente sin ponerse en cola. Si eso tiene éxito, hecho. No se pone en ninguna cola, ya que podría obtener el bloqueo. Tenga en cuenta que a esto no le importa si ya hay subprocesos en espera en la cola, por lo que es "injusto" (para los otros subprocesos que ya están esperando). Si no pudo adquirir el bloqueo (lo que significa que alguien más lo tiene), se pone en la cola.

Por otro lado, en el modo fair , el subproceso que llama al lock primero debe verificar si ya hay subprocesos esperando este bloqueo. Si no hay tales subprocesos y puede tomar el bloqueo: no poner en cola y tomar el bloqueo. Si no puede, se pone en cola.

Un último punto es que, tanto en el modo justo como en el injusto, los subprocesos se colocan en la misma cola; es decir: fair/unfair no se trata de la representación interna de la cola.

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda