Чем метод 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 метод.

Обратите внимание на часть, которая говорит, что вы не должны использовать ни один из них в большинстве случаев:)

Другие вопросы по тегам