В четвертом издании книги Джеффери Рихтера CLR via C# увидел интересный код(возможно он был описан и предшествующих изданиях)
class AnotherHybridLock : IDisposable
{
private Int32 m_waiters = 0;
private AutoResetEvent m_waiterLock = new AutoResetEvent(false);
private Int32 m_spincount = 4000;
private Int32 m_owningThreadId = 0, m_recursion = 0;
public void Enter()
{
Int32 threadId = Thread.CurrentThread.ManagedThreadId;
if (threadId == m_owningThreadId) { m_recursion++; return; }
SpinWait spinwait = new SpinWait();
for (Int32 spinCount = 0; spinCount < m_spincount; spinCount++)
{
if (Interlocked.CompareExchange(ref m_waiters, 1, 0) == 0) goto GotLock;
spinwait.SpinOnce();
}
if (Interlocked.Increment(ref m_waiters) > 1) m_waiterLock.WaitOne();
GotLock:
m_owningThreadId = threadId; m_recursion = 1;
}
public void Leave()
{
Int32 threadId = Thread.CurrentThread.ManagedThreadId;
if (threadId != m_owningThreadId) throw new SynchronizationLockException("Lock not owned by calling thread");
if (--m_recursion > 0) return;
m_owningThreadId = 0;
if (Interlocked.Decrement(ref m_waiters) == 0) return;
m_waiterLock.Set();
}
public void Dispose()
{
m_waiterLock.Dispose();
}
}
За
goto руки отрывают, но Рихтер все-таки авторитет.

Придется оставить жить
Здравствуйте, SanyaVB, Вы писали:
SVB>За goto руки отрывают, но Рихтер все-таки авторитет.
Придется оставить жить
Кому отрывают? goto это всего навсего одна из возможностей языка. и если при помощи goto повышается читабельность кода, почему нет?
просто каждым инструментом нужно пользоваться с умом и в меру.
SVB>В четвертом издании книги Джеффери Рихтера CLR via C#
Неожиданно, я пропустил такое событие!
Кто-нибудь прочел оба? Много в 4-м нового?
Посмотрел в 3 издании — примерно тот же код с GOTO и без пояснений отчего так.
У него в блоге забавный комментарий(2011г.):
Hey, you're the goto expert. Thanks for hnaigng out here.
PS ничего личного против го-ту не имею, но не использую в силу традиции.
Здравствуйте, SanyaVB, Вы писали:
Из книги Макконнелла "Совершенный код"
"Метки goto должны быть выровнены влево, состоять из заглавных букв и содержать имя программиста, его домашний телефон и номер кредитной карты."
Он там координаты не оставил?