Чем метод SpinWait в NET 4.0 отличается от SpinWait() до версии 4.0?

MSDN "Thread-Safe Collections .NET Framework 4 " сообщает:

«Некоторые типы параллельных коллекций используют облегченные механизмы синхронизации, такие как SpinLock, SpinWait, SemaphoreSlim и CountdownEvent, новые в .NET Framework 4"

в то время как веб-сайт MSDN сообщает, что SpinWait был доступен до версии .NET 1.1, а другая статья MSDN запускает SpinWaitwas из .NET 4.0

Что ж, любопытство связано с комментарием Ли Гриссома к ответу В чем разница между SynchronizedCollection и другими параллельными коллекциями?:

«@Matt, параллельные классы .NET4 используют объекты SpinWait для обеспечения безопасности потоков вместо Monitor.Enter/Exit (также известный как критический раздел)?»

а также первая цитата NSDN о том, что SpinWait является новым для .NET 4.0.

Так он новый или нет?
А если новый, то как?


person Fulproof    schedule 27.02.2013    source источник
comment
Глядя на ваши ссылки и не имея других знаний, кажется, что функция a SpinWait присутствовала в .NET 1.1, а структура SpinWait была добавлена ​​в .NET 4.0.   -  person ta.speot.is    schedule 27.02.2013


Ответы (2)


Структура System.Threading.SpinWait является новой для .NET 4.0. Метод System.Threading.Thread.SpinWait() существует с .NET 1.0.

Обратите внимание, что System.Threading.SpinWait внутренне вызывает System.Threading.Thread.SpinWait(). Дополнительные сведения см. в статье Джо Даффи «Параллельное программирование в Windows» (глава 14, раздел «Ожидание вращения»).

person afrischke    schedule 27.02.2013
comment
О, опять эта книга. Больше нет книг по .NET по параллелизму, только одна? - person Fulproof; 27.02.2013

System.Threading.SpinWait структура была введен в .NET 4. System.Threading.Thread.SpinWait метод присутствует, начиная с .NET 1.0.

Из документов для структуры SpinWait:

SpinWait обычно бесполезен для обычных приложений. В большинстве случаев следует использовать классы синхронизации, предоставляемые .NET Framework, например Monitor. Однако в большинстве случаев, когда требуется ожидание вращения, следует предпочесть тип SpinWait методу SpinWait.

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

person Jon Skeet    schedule 27.02.2013
comment
Мне кажется, что все ответы о потокобезопасности небезопасны для потоков. Заговор, чтобы удержать меня от многопоточного программирования - person Fulproof; 27.02.2013