Comments 439
Видимо это очень смешно, жаль я не понимаю о чём это... =(
+55
это С#. и настоящий WTF. lock ("Place Order") - бессмыслица жуткая
+5
Что делает оператор lock?
+6
запрещает доступ к ресурсу, указанному в аргументе, другим потокам, пока текущий поток не выполнит операции в части кода, ограниченной lock'ом
+4
ахахахахах
+1
это я всмысле шутку понял ;-)
+3
краткость сестра таланта (с)
+1
это что-то вроде synchronized section в Яве?
0
чепуха! вовсе он не запрещает доступ к ресурсу, указанному в аргументе. аргумент - всего лишь объект синхронизации. И что вообще значит "запретить доступ к ресурсу"?
0
аргумент - любой объект. Да, у него где-то внутри есть примитив/объект синхронизации, критическая секция например.
Запретить доступ к ресурсу - хм, ну другой поток, который попытается выполнить код, ограниченный lock'ом, вынужден будет ждать.
Запретить доступ к ресурсу - хм, ну другой поток, который попытается выполнить код, ограниченный lock'ом, вынужден будет ждать.
0
Но вы то написали "запрещает доступ к ресурсу, указанному в аргументе, другим потокам..." - хотя может я просто не понял фразы :)
В любом случае объект синхронизации остается очень даже доступным. Критической секции не создается для отдельного объекта - это сочли неоптимальным - вместо этого в поле SyncBlockIndex у каждого объекта хранится индекс критической секции из кэша(если он не участвует в синхронизации то SyncBlockIndex==-1).
http://msdn.microsoft.com/en-us/magazine…
В любом случае объект синхронизации остается очень даже доступным. Критической секции не создается для отдельного объекта - это сочли неоптимальным - вместо этого в поле SyncBlockIndex у каждого объекта хранится индекс критической секции из кэша(если он не участвует в синхронизации то SyncBlockIndex==-1).
http://msdn.microsoft.com/en-us/magazine…
0
lock ("string") MSDN <a href="http://msdn.microsoft.com/en-us/library/c5kehkcz.aspx"упоминает</a>, как common practice, естественно, осуждая при этом.
Давно не имел дела с .NET, но насколько я понимаю, строка интернируется и полной бессмыслицей назвать код нельзя.
Давно не имел дела с .NET, но насколько я понимаю, строка интернируется и полной бессмыслицей назвать код нельзя.
+4
Извиняюсь, тег недопечатал. правильная ссылка на MSDN
+3
мне почему-то кажется, что переменную не ссылочного типа использовать не получится, даже если она становится статической переменной. может я не прав. в любом случае это очень неочевидный, а следовательно не очень хороший код для поддержки, даже если он таки работает правильно. но мысль интересная, надо будет проверить как такой код себя ведет
+2
И всё таки! Кто нить обьясните в чём соль!
З.Ы: А ты понимаешь в чём соль %username%?
З.Ы: А ты понимаешь в чём соль %username%?
+2
UFO just landed and posted this here
UFO just landed and posted this here
господа делаем ставки =)
+6
1. Рейтинг статьи от 10 до 15 (по модулю).
2. Карма автора от 7 до 10 (по модулю).
3. Перемещение в «Юмор на Хабрахабре» или в новый коллективный блог «КодоБредоБред» (в случае, если сознательные хабраграждане спасут карму автора).
2. Карма автора от 7 до 10 (по модулю).
3. Перемещение в «Юмор на Хабрахабре» или в новый коллективный блог «КодоБредоБред» (в случае, если сознательные хабраграждане спасут карму автора).
+10
UFO just landed and posted this here
Сэр, с вами всё порядке?
+7
Шедеврально! Плюсанул статью, пока ее не заминусовали :)
+7
Это надо вообще на главную, такое не каждый день увидишь
Много нового узнал :)
Много нового узнал :)
+9
Полностью с солидарен с Вашей точкой зрения. Подача материала великолепна. Что-либо близкое по уровню я не встречал, наверное, со времени чтения McConnell'а.
+12
Коллега, ведь мы наблюдаем с вами по истине революционный момент в истории технической литературы.
Lock ещё долго будут приводить в пример другим писателям и заслуженно считать классикой жанра.
Lock ещё долго будут приводить в пример другим писателям и заслуженно считать классикой жанра.
+9
Да-да! Хоть стиль немного "официальный", суховатый, но, как вы выразились, подача его великолепна! Ну и к концовке чуть придерусь, как-то она замята.
+6
вы смеетесь, а я весь плюсомет расстрелял, включая карму. Через GPRS. Убейте меня :)
+1
вам смешно, а я весь свой плюсомет расстрелял. Через gprs. Убейте меня :)
+1
Автора! Автора! :)
+5
UFO just landed and posted this here
неплохо, неплохо..
+4
Не то окно? =) С IDE перепутали?
+11
UFO just landed and posted this here
Изумительно!
Такая грация...
Чувства переполняют просто...
Такая грация...
Чувства переполняют просто...
+8
{ // some comment }
+8
UFO just landed and posted this here
Главное на главную не выйти. Тогда тролляки всё испортят
+4
Рад что всем понравилось.
Надеюсь с кодом автора больше работать не придется.
Надеюсь с кодом автора больше работать не придется.
+5
Мир вам, братья! :)
+4
В lock мой order!
+13
Добрая фея, где же ты?
+4
Хотел выяснить откуда «растут ноги» у этого куска кода.
К моему удивлению, этот пост Google уже проиндексировал и выдал первой строчкой :)
Google тоже проникся добром к Хабру.
К моему удивлению, этот пост Google уже проиндексировал и выдал первой строчкой :)
Google тоже проникся добром к Хабру.
+4
Кто все эти люди? о_О
+3
Странный код. Объясните, плз, в чем соль?
+2
При некоторых обстоятельствах это даже корректно, не считая того что не скомпилится %)
+1
А вы все - молодцы ^_^
+1
тут походу все каменты плюсуют )))
-21
Возникает когнитивный диссонанс при взгляде на этот комментарий :)
+6
заминусовали... ещё и в карму насрали :(
+1
UFO just landed and posted this here
вам показалось
+2
UFO just landed and posted this here
Даёшь Файрфокс и Гугл
+2
как раз то что надо новичкам - второй день на хабре и под раздачу попасть - птица счастья?
+2
Гениально!)
+2
Изумительно! нет слов!
+2
Лебедев, мак vs винда vs линух, троли
+2
Воистину!
lock ("Place Order") { // some code } © Примечание Forb'а
lock ("Place Order") { // some code } © Примечание Forb'а
+1
Обычно после такого сабантуя наступает жестокий отходняк. Ну-ка, раз...
+1
Потрясающе! Столько смысла в одной строчке я никогда ещё не видел! Автор великолепен! Браво!
+1
UFO just landed and posted this here
Поздравляю всех с победой здравого смысла !!! =)
+4
Потрясающий код (:
+1
UFO just landed and posted this here
Спасибо за участие в эксперименте "как, имея 7 постов, получить 15 очков кармы".
+4
2 симпы автору)
+2
Добро победит зло!
+1
UFO just landed and posted this here
ага, вот эти парни
+6
а в чём юмор, объясните, пожалуйста? я кодить не умею, поэтому и спрашиваю..
+2
Чорд, я вывалил 116 плюсов за сегодня…
а теперь налетели тролли.
а теперь налетели тролли.
+3
этот комментарий не плюсуйте, пожалуйста
-17
я не знаю почему, но мне этот топик начинает нравиться все больше и больше =)
+5
неужели, и мне перепадет?:)
+2
Конечно. У меня плюсы быстро пополняются:)
+2
спасибо:) хорошего вам настроения:)
+2
Пожалуйста:)
Все в тиворз!!! =)
Все в тиворз!!! =)
+2
признайтесь - muse ваш виртуал! %)
+1
он теперь тиворлдс называется
+2
вы - хаброангел
+1
Эйнштейн!
+2
Круто!
+2
ого. бесплатная раздача плюсов :)
может потому что седня 06.07.08? :)
может потому что седня 06.07.08? :)
+5
Круто.
+2
думаю пора уже unlock делать )
+2
хабр превращается в дрочерство на карму
+2
круто (:
+1
UFO just landed and posted this here
lock - новое открытие хабрахабр)
Даже в тэге lock всего одна тема(
Даже в тэге lock всего одна тема(
+1
Е О Х С ??? )))
+1
May the Lock be with you!
+3
Let a power o the lock
bless you!
bless you!
+1
Какая-то массовая истерия чтоли...
---
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.
---
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.
+1
Топикстартера минусуют!
Ану поправить ситуацию! Плюсометы на взвод! =)
Ану поправить ситуацию! Плюсометы на взвод! =)
+3
power of the lock ... ((
+2
unlock("The Beast") { //now run away! }
+4
подняли настроение на весть вечер!
(возможно, и всю следующуне неделю)
(возможно, и всю следующуне неделю)
+3
как тут классно :)
+3
код не выполниться xD
верно так:
lock ("Place Order") { /* some code */ }
верно так:
lock ("Place Order") { /* some code */ }
+2
ничего не понял, но топик добрый, приятно читать комментарии ^_^
+2
Я ничего не понимаю в C#, но мне всё равно очень, очень весело.
+1
на этом дискуссия подошла к своему логическому концу
+2
нифига не подошла, я требую продолжения банкета!
+2
добре!
+1
Это особый, уличный кодинг
+2
Пиченьки!
+3
Локальный праздник =)
+2
Обожаю, когда на хабре появляется пост добра :)
Добро победит! Прошу только без холиворов :)
Добро победит! Прошу только без холиворов :)
+2
Народ, опомнитесь! В полночь все плюсики превратятся в тыквы!
+3
Код выполнится, более того, критическая секция не будет прервана из другого потока этого же процесса, если в нём не будет такого же lock("Place Order"). Не слишком красиво и безопасно, но для топика - не повод.
+1
Мне кажется, ничего ведь страшного не будет, если я про коллайдер тут напишу?
+2
Какой красивый топик :)
+1
Офигеть
+1
Жжоте ребята :) Ыыы
+2
= Объяснение =
МСДН: 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лждоыв"
МСДН: 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лждоыв"
+2
Только в пределах процесса.
+2
А где про это вааще нормально написано - про процессы, треды и прочее?
+2
http://rsdn.ru/article/dotnet/CSThreadin…
например тут
например тут
+1
kлджоп? :) Не думал что насрать в комментах можно так органично, на 3 строки!
+2
Ситуацию с неправильным комметарием я увидел сразу, а теперь и вообще радуюсь вместе со всеми :) Ну не сталкивался я с C#
+1
Добра и Света вам братья!
+2
Читал сегодня вашу статью!
Многое не понял, но все равно, классно!
Многое не понял, но все равно, классно!
+2
А что все так раздулись? )
+2
+8
UFO just landed and posted this here
Это была первый урок по изучению C#. Что же будет на следующем?.. :)
+2
О великий Макконнелл, спаси нас.
+3
Даешь больше зеленых плюсов чем у первого коммента! (:
+2
lock в опасносте.
+3
Даешь мировой рекорд по количеству одновременно улыбающихся хабралюдей :)
+2
Фуф, я свои 25 раздал, обойма опустела (:
+2
Вот стесняюсь спросить...
А может в честь такого прилива добра на хабр, мне кто-нибудь карму повысит? :)
Давно хочу несколько интересных статей выложить, а кармы по нулям.
А может в честь такого прилива добра на хабр, мне кто-нибудь карму повысит? :)
Давно хочу несколько интересных статей выложить, а кармы по нулям.
+1
Черт, почему я незнаю C#? ;-)
+2
Какой позитивный зеленый топик получился (=
Самое интересное что после десятка коментов все забыли про lock (=
Самое интересное что после десятка коментов все забыли про lock (=
+2
UFO just landed and posted this here
первый раз вижу столько плюсов в коментариях...
+1
Если это топик добра, пожелайте, хабралюди, мне удачи. Если завтра пересдам матан, перейду на 3 курс. :)
+3
Офигеть!
Ну спасибо, народ! Ну настроение подняли!
Прям как из жаркой пустыни да под холодный душ: впервые увидел «Пост Добра» )))
Предлагаю отмечать в календаре «Дни Добра».
06.07.08 замечательно для этого подходит.
До встречи 08.08.08! ;-p
Ну спасибо, народ! Ну настроение подняли!
Прям как из жаркой пустыни да под холодный душ: впервые увидел «Пост Добра» )))
Предлагаю отмечать в календаре «Дни Добра».
06.07.08 замечательно для этого подходит.
До встречи 08.08.08! ;-p
+3
Продолжил позитив и раздал все свои плюсы в этом топике :)))
+2
ALL GLORY TO THE HYPNOTOAD!
+3
Хабр не выдерживает такого груза добра:
"504 Gateway Time-out
nginx/0.6.31"
"504 Gateway Time-out
nginx/0.6.31"
+2
А ты полюбил ближнего своего, %username%?
+2
черт, я поставил минус топику, потом прочитал комменты и теперь мне стыдно :)
+2
while (seeThisComment)
{
karma++; // please ;-)
}
{
karma++; // please ;-)
}
+2
Забавно :-)
+2
+2
Чудеса :)
+2
За всю историю коментариев нету ни одного с отрицательным рейтингом :) Впервые.
+2
есть, но они быстро подправляются плюсами )))
+2
В середине страницы есть парочка.. Ещё несколько НЛО потырило :)
+2
это не первый пост добра, %username%
+1
Я знаю, но этот вроде начинался по другому. Там вроде какая-то шутка была, даже по-моему про программирование. :-/
+1
Где я?!!!!
+3
груз добра грузом, но во что в итоге затранслируется этот код будет зависеть от компилятора. с MS-овским оно вроде даже и работать будет как задумано, а вот с Mono не факт :")
З.Ы.: я так не писал и писать никогда не буду :D
З.Ы.: я так не писал и писать никогда не буду :D
+2
lock