Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

238
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!