чепуха! вовсе он не запрещает доступ к ресурсу, указанному в аргументе. аргумент - всего лишь объект синхронизации. И что вообще значит "запретить доступ к ресурсу"?
аргумент - любой объект. Да, у него где-то внутри есть примитив/объект синхронизации, критическая секция например.
Запретить доступ к ресурсу - хм, ну другой поток, который попытается выполнить код, ограниченный lock'ом, вынужден будет ждать.
Но вы то написали "запрещает доступ к ресурсу, указанному в аргументе, другим потокам..." - хотя может я просто не понял фразы :)
В любом случае объект синхронизации остается очень даже доступным. Критической секции не создается для отдельного объекта - это сочли неоптимальным - вместо этого в поле SyncBlockIndex у каждого объекта хранится индекс критической секции из кэша(если он не участвует в синхронизации то SyncBlockIndex==-1). http://msdn.microsoft.com/en-us/magazine…
lock ("string") MSDN <a href="http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx"упоминает</a>, как common practice, естественно, осуждая при этом.
Давно не имел дела с .NET, но насколько я понимаю, строка интернируется и полной бессмыслицей назвать код нельзя.
мне почему-то кажется, что переменную не ссылочного типа использовать не получится, даже если она становится статической переменной. может я не прав. в любом случае это очень неочевидный, а следовательно не очень хороший код для поддержки, даже если он таки работает правильно. но мысль интересная, надо будет проверить как такой код себя ведет
1. Рейтинг статьи от 10 до 15 (по модулю).
2. Карма автора от 7 до 10 (по модулю).
3. Перемещение в «Юмор на Хабрахабре» или в новый коллективный блог «КодоБредоБред» (в случае, если сознательные хабраграждане спасут карму автора).
Полностью с солидарен с Вашей точкой зрения. Подача материала великолепна. Что-либо близкое по уровню я не встречал, наверное, со времени чтения McConnell'а.
Коллега, ведь мы наблюдаем с вами по истине революционный момент в истории технической литературы.
Lock ещё долго будут приводить в пример другим писателям и заслуженно считать классикой жанра.
Хотел выяснить откуда «растут ноги» у этого куска кода.
К моему удивлению, этот пост Google уже проиндексировал и выдал первой строчкой :)
Google тоже проникся добром к Хабру.
Особенно эротично, что когда пишешь длинную умную статью, тратя массу времени, усилий и душевной красоты, её не заметят в лучше случае. А вот за такую вот упячку забросают чепчиками.
По старой доброй традиции, когда что-то непонятно, это «что-то» переводят с помощью Промта. В данном случае перевод гласит: замок ("Размещают Заказ") {//некоторый кодекс}
Признаюсь.
Нет =)
У меня просто настроение после этого топика очень хорошее. Или это из-за того, что я три дня е*ался с програмой на асме под восьмибитный микроконтроллер, и сегодня она наконецто заработала. Не знаю:)
Короче, держите плюс в карму =)
---
The lock keyword ensures that one thread does not enter a critical section of code while another thread is in the critical section. If another thread tries to enter a locked code, it will wait, block, until the object is released.
The section Threading (C# Programming Guide) discusses threading.
The lock keyword calls Enter at the start of the block and Exit at the end of the block.
In general, avoid locking on a public type, or instances beyond your code's control. The common constructs lock (this), lock (typeof (MyType)), and lock ("myLock") violate this guideline:
* lock (this) is a problem if the instance can be accessed publicly.
* lock (typeof (MyType)) is a problem if MyType is publicly accessible.
* lock(“myLock”) is a problem because any other code in the process using the same string, will share the same lock.
Best practice is to define a private object to lock on, or a private static object variable to protect data common to all instances.
Код выполнится, более того, критическая секция не будет прервана из другого потока этого же процесса, если в нём не будет такого же lock("Place Order"). Не слишком красиво и безопасно, но для топика - не повод.
МСДН: lock(“myLock”) is a problem because any other code in the process using the same string, will share the same lock.
А это значит, что в момент выполнения этого куска кода если где-нибудь будет выводиться в другом месте строка "Place Order", что вполне возможно, если это какой-нить сервер, или просто передаваться куда-нибудь, то будет жоппа.
Чтобы жоппы не было надо использовать строку типа "аfsakl;jfkldsjfklsdjfklsdjlfjsdlkfjsdlkjfjsdklf jsdlkfj дылвао дылвоа длыфво ажлдыфво адлжоывлдафо дылжво адлжыфво аджлыво аdfsj kлждоп jsg js0934u08 u34208 кощшоавдлжьявмю.бьц34ш к0983лждоыв"
Вот стесняюсь спросить...
А может в честь такого прилива добра на хабр, мне кто-нибудь карму повысит? :)
Давно хочу несколько интересных статей выложить, а кармы по нулям.
Причем самое интерестное, что если вы написали этот коммент в любом другом топике его и вашу карму заминусовали. По хабру можно психологию толпы изучать!
Выкладывайте-выкладывайте. Хорошего контента много не бывает.
P.S. Только такого безумия лучше не устраивать, ибо нечасто одновременно у подобного количества людей просыпаются неслыханная щедрость и приток положительного настроения.
посты добра появляются каждые один-два месяца. с шуток, в новостей или чего угодно. вот был как-то потс про убунту-аватарки, приуроченный к выходу новой версии. и еще куча других, стихийных постов, нарушивших покой хабра :)
груз добра грузом, но во что в итоге затранслируется этот код будет зависеть от компилятора. с MS-овским оно вроде даже и работать будет как задумано, а вот с Mono не факт :")
З.Ы.: я так не писал и писать никогда не буду :D
Всем, читающим мой комментарий, я искренне и от всей души желаю счастья и удачи во всех начинаниях. Окружающий нас мир очень хорош, на самом деле. Прекрасно, что выпала возможность поделиться этим знанием со всеми.
Я раздал свою обойму и теперь у мне везде плюсы мерещатся. Даже мемы все как-то перевернулись
в рот мне плюсы
спасибо поплюсовал
ахуеть двайте два
плюсы не мои, я только разместил объяву
чак норрис настолько крут, что у него каждый плю больше другого
где плюсы живут плюсы, две мохнатые плюсы
сейчас я расскажу вам немного о плюсах и разные комментарии с точки зрения других людей...
вот у нас в классе есть мальчик... он всем в топике добра плюсанул, а автору не плюсанул - это не правильно. И он мне такой говорит - "плюсы сакс, плюсы сакс", а я ему такой - "а ты хоть знаешь что такое плюсы сакс", он такой - "нет не знаю", а я - "Ну ты вобщето меня ща оскорбил или что-то в этом роде"...
Предлагаю назначить 6-е июля праздником lock'a. В этот день все lock'еры собираются
вместе, поют, пляшут и прыгают через костёр. Тому кто сумеет перепрыгнуть - ставят плюс.
Утверждение. Какая-то у Вас шкала странная. Доказательство. От -22 до 44 полет нормальный с шагом измерения, равным двум. После этого сразу два раза появляется 45, затем шкала от 46 до 62 идет с шагом, равным единице. Опять же, не совсем понятно, что творится после 62, но если принять предположение, что шаг измерения сохраняется далее, то 64 = ∞.
:)
Кстати, недавно вот тоже столкнулись с таким кодом. Недоуменно изучали мсдн, гуглили, в конце-концов решили, что это был прикол и дружно переписали блокировки.
lock