La documentazione MSDN per ManualResetEventSlim
statiManualResetEventSlim raccomandati tempo di attesa
È possibile utilizzare questa classe per prestazioni migliori di
ManualResetEvent
quando i tempi di attesa dovrebbero essere molto breve.
Quanto è "molto breve"? A che punto il vantaggio dell'utilizzo di un oggetto kernel con un ManualResetEvent
supera l'overhead di istanziarlo?
Per me, "molto breve" è piuttosto insignificante. La mia regola è che se mi aspetto che l'evento sia impostato per la maggior parte del tempo (cioè non aspetto di aspettare), allora userò 'ManualResetEventSlim'. Altrimenti userò 'ManualResetEvent'. Se stai scrivendo un'applicazione sensibile alle prestazioni, dovresti testare il tuo codice con entrambi per determinare se c'è qualche differenza. Se non contate i microsecondi, probabilmente è una perdita di tempo preoccuparsi di quale sia più veloce. –
"Molto breve" in questo contesto significa da decine a centinaia di microsecondi. La versione snella attizza con l'aspettativa che l'altro thread rilascerà il blocco in meno tempo rispetto a un paio di interruttori di contesto. – doug65536