thread safe

Dec. 2nd, 2009 01:45 pm
109: (Default)
[personal profile] 109
в очередной раз убедился, что Eric Lippert is a moron.

moron отличается от нормального человека, в частности, тем, что не способен понять, что написал чушь, а, наоборот, будет отстаивать в комментах чушь, которую написал ранее, даже после того, как ему многократно и вежливо объяснили, в чём он ошибается.

например, в его inline ответах к комменту, датированному "October 20, 2009 8:39 AM", он даже не видит разницы между thread safe Queue.IsEmpty() и не thread safe. "всё равно нужно синхронизировать доступ к Queue во внешнем коде", пишет тупой Эрик, так что без разницы, thread-safe он или нет.

забавно, что даже такую простейшую функциональность, как IsEmpty() можно с пользой использовать без внешней синхронизации. например,

if queue.IsEmpty() Thread.Sleep(SLEEP_INTERVAL);

уж не говоря о более осмысленных конструкциях типа bool TryDequeue(out value);

грустнее всего, что вот такие люди нам пишут .Net 4.0. как его ещё не выгнали, не понимаю.

(no subject)

Date: 2009-12-02 10:46 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Вот кстати насчёт более осмысленной конструкции типа bool `TryDequeue(out value);` я согласен, она может быть полезна. Хотя правильней было бы всё равно явно синхронизироваться через эвенты, ну да ладно, эта штука будет обычно работать и даже не очень неэффективно (пока перед тобой не встанет вопрос о том, на сколько, собственно, засыпать).

А вот как thread-safe queue.IsEmpty может быть полезно для чего бы то ни было, я представить не могу. Она сама её лочит один раз, потом ещё раз лочит когда ты пытаешься декьюйнуть и при этом может обломаться, то есть потратить множество процессорного времени впустую, вместо того, чтобы ты сделал этот один первый лок сам и достал значение, если оно есть, гарантированно. В чём смысл-то?

(no subject)

Date: 2009-12-02 10:47 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
И да, TryDequeue можно и нужно реализовывать экстенжен методом для not thread-safe queue. Ммм?

(no subject)

Date: 2009-12-02 11:49 pm (UTC)
From: [identity profile] 109.livejournal.com
разумеется, нет. нельзя один метод сделать thread-safe, а остальные оставить не-safe. плюс локи, если через них делается, надо брать на private syncObject, а то я видел, как умельцы делают lock (this).

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags