Чем метод NET 4.0 SpinWait отличается от метода SpinWait() до версии 4.0?
MSDN "Многопоточные коллекции.NET Framework 4" заявляет:
"Некоторые из одновременных типов коллекций используют легкие механизмы синхронизации, такие как SpinLock, SpinWait, SemaphoreSlim и CountdownEvent, которые являются новыми в.NET Framework 4"
в то время как сайт MSDN сообщает, что SpinWaitwas был доступен до.NET 1.1, в то время как другая статья MSDN запускает SpinWaitwas с.NET 4.0
Что ж, любопытство связано с комментарием Ли Гриссома, чтобы ответить. В чем разница между SynchronizedCollection и другими параллельными коллекциями?:
"@Matt, классы.NET4 используют одновременно
SpinWait
объекты для обеспечения безопасности потока вместо Monitor.Enter/Exit (он же Critical section)?"
а также первая цитата из NSDN о том, что SpinWait
является новым для.NET 4.0
Так это новое или нет?
А если новый то как?
2 ответа
Структура System.Threading.SpinWait
является новым для.NET 4.0. Метод System.Threading.Thread.SpinWait()
существует с.NET 1.0.
Обратите внимание, что System.Threading.SpinWait
внутренние звонки System.Threading.Thread.SpinWait()
, Для получения дополнительной информации см. "Параллельное программирование в Windows" Джо Даффи (глава 14, раздел "Ожидание вращения").
System.Threading.SpinWait
структура была введена в.NET 4. System.Threading.Thread.SpinWait
Метод присутствует с.NET 1.0.
Из документов для SpinWait
состав:
SpinWait обычно не полезен для обычных приложений. В большинстве случаев вам следует использовать классы синхронизации, предоставляемые.NET Framework, например Monitor. Однако для большинства целей, где требуется ожидание вращения,
SpinWait
тип должен быть предпочтительнее, чемSpinWait
метод.
Обратите внимание на часть, которая говорит, что вы не должны использовать ни один из них в большинстве случаев:)