Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

236
Visualizações
¿Es .NET 6 PriorityQueue seguro para subprocesos?

.NET 6 ahora tiene PriorityQueue<TElement,TPriority>, que es muy útil. El documento aún no está muy claro (concedido en el momento de la pregunta, la documentación aún es para RC1) si es seguro para subprocesos o no . Dos cosas:

  • Reside en System.Collections.Generic y no parece haber un equivalente en System.Collections.Concurrent .

  • Tiene un método llamado TryDequeue y TryPeek . De acuerdo, probablemente sean solo métodos que no arrojan una excepción cuando la cola está vacía, pero da una impresión de las colecciones concurrentes.

¿Puedo usarlo para un entorno de subprocesos múltiples sin envolver/bloquear (por ejemplo, en un sitio web de ASP.NET Core)? ¿Algún equivalente simultáneo que desconozco (intento no usar un paquete de terceros si es posible)?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Con un vistazo al código fuente de PriorityQueue.Enqueue , por ejemplo, es inmediatamente evidente que el código no es seguro para subprocesos:

 public void Enqueue(TElement element, TPriority priority) { // Virtually add the node at the end of the underlying array. // Note that the node being enqueued does not need to be physically placed // there at this point, as such an assignment would be redundant. int currentSize = _size++; // <-- BOOM
over 4 years ago · Santiago Trujillo Relatório

0

El documento aún no es muy claro.

en realidad lo es Nada en .NET NO es seguro para subprocesos a menos que se mencione EXPLÍCITAMENTE en la documentación. Período.

La seguridad de subprocesos conlleva una sobrecarga de rendimiento (significativa), especialmente cuando se realiza de forma genérica (es decir, sin asumir usos específicos). Como tal, sería extremadamente estúpido hacer que todo sea seguro para subprocesos "por si acaso". De ahí el concepto general en .NET (desde la versión 1.0) de que NADA es seguro para subprocesos a menos que se mencione explícitamente en la documentación.

Como usted dice, la documentación no menciona la seguridad de los subprocesos. Como tal, es extremadamente claro que NO es seguro para subprocesos.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda