Non riesco a immaginare che ci sia un singolo blocco che tutti i thread devono acquisire per allocare memoria. Quindi ci sono più cumuli di Gen 0? Ce n'è uno suddiviso tra i thread?CLR: In che modo la generazione 0 è condivisa da tutti i thread?
risposta
Da questo articolo: Garbage Collection Part 2: Automatic Memory Management in the Microsoft .NET Framework da Jeffrey Richter
privo di sincronizzazione allocazioniIn un sistema multiprocessore, generazione 0 della memoria dinamica viene diviso in più arene memoria utilizzando un'arena per thread. Ciò consente a più thread di effettuare allocazioni simultaneamente in modo che non sia richiesto l'accesso esclusivo all'heap.
Collezioni ScalableIn un sistema multiprocessore che esegue la versione server del motore di esecuzione (Mscorsvr.dll), l'heap gestito è suddiviso in diverse sezioni, una per ogni CPU. Quando viene avviata una raccolta, il raccoglitore ha un thread per CPU; tutti i thread raccolgono le proprie sezioni contemporaneamente. La versione della workstation del motore di esecuzione (MSCorWks.dll) non supporta questa funzionalità.
Ci sono molte altre cose in corso, cercare il titolo "Prestazioni per applicazioni multithread".
- 1. Python che crea una variabile condivisa tra i thread
- 2. C# che sospende tutti i thread
- 3. In che modo thread-safe è V4L2?
- 4. In che modo l'accesso a erlang è una risorsa condivisa?
- 5. Elenca tutti i thread
- 6. Attendi che finiscano tutti i thread in un Executor?
- 7. Guid è tutti 0 (zeri)?
- 8. Come annullare la generazione di un thread?
- 9. variabile condivisa tra due thread si comporta in modo diverso dalla proprietà condivisa
- 10. Quali sono i metodi dinamici e in che modo DynamicMethod è diverso da MethodBuilder?
- 11. Interblocco fornisce visibilità in tutti i thread?
- 12. Qual è la differenza tra un thread Worker CLR e un thread Worker?
- 13. In che modo .Net CLR implementa internamente un'interfaccia?
- 14. qual è la differenza tra pool di thread di Windows e pool di thread CLR
- 15. È possibile che Thread 2 stampi "x = 0"?
- 16. non interrompe tutti i thread in gdb
- 17. CLR si chiude quando un'eccezione viene gestita da un thread
- 18. Cross Process Event - Rilasciare tutti i camerieri in modo affidabile
- 19. Utilizzo di thread e fibre gestiti in CLR
- 20. Qual è il modo migliore per far funzionare più thread e attendere che vengano completati tutti?
- 21. In CLR, qual è la differenza tra un thread in background e in primo piano?
- 22. È ok attendere la stessa operazione da più thread - è in attesa di thread sicuro?
- 23. I mutex pthread funzionano sui thread se nella memoria condivisa?
- 24. La libreria Trove è protetta da thread?
- 25. In che modo un pool di thread memorizzato nella cache riutilizza i thread esistenti
- 26. C# ottenere tutti i colori da colori
- 27. Comunicazione tra thread java: interruzione di tutti i thread quando si termina l'attività
- 28. Come è organizzata la memoria condivisa 2D in CUDA
- 29. In attesa di terminare tutti i thread in Spring Integration
- 30. È necessario interrompere esplicitamente tutti i thread prima di uscire da un'applicazione Win32?