Net framework 5, а также среды Visual Studio 2012 и C#



Download 6,27 Mb.
Pdf ko'rish
bet644/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   640   641   642   643   644   645   646   647   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C


Глава.30 .Гибридные.конструкции.синхронизации.потоков
С этой конструкцией связан ряд концепций, заслуживающих отдельного упо-
минания. Во-первых, конструктору 
ReaderWriterLockSlim
можно передать флаг 
LockRecurionsPolicy
, определенный следующим образом:
public enum LockRecursionPolicy { NoRecursion, SupportsRecursion }
Флаг 
SupportsRecursion
наделяет код блокирования механизмом владения по-
током и рекурсивным поведением. Как уже упоминалось в этой главе, эти режимы 
негативно влияют на производительность блокирования, так что я рекомендую 
всегда передавать конструктору флаг 
LockRecursionPolicy.NoRecursion
(как 
это сделано в моем примере). Поддержка режимов владения потоком и рекурсии 
для блокирования на чтение-запись является крайне дорогим удовольствием, ведь 
при блокировании нужно отслеживать все блокируемые потоки, занимающиеся 
чтением данных, и поддерживать для каждого из них отдельный счетчик рекурсии. 
На самом деле для управления всей этой информацией в безопасном в отношении 
потоков режиме конструкция 
ReaderWriterLockSlim
внутренне использует взаи-
моисключающее блокирование с зацикливанием! И я не шучу.
Класс 
ReaderWriterLockSlim
содержит дополнительные методы (ранее они не 
демонстрировались), позволяющие читающему потоку превратиться в поток за-
писывающий. Затем возможен обратный переход. В основе такого подхода лежит 
идея, что в процессе чтения данных потоком может возникнуть необходимость 
их редактирования. Поддержка данного поведения снижает производительность 
блокирования. Ну а я так вообще считаю его бесполезным. Дело в том, что поток не 
может просто так превратиться из читающего в пишущий. Перед тем как он получит 
позволение на подобное преобразование, все остальные читающие потоки должны 
покинуть код блокирования. Это то же самое, что поток чтения, освобождающий 
блокировку и тут же получающий ее для записи.
ПриМеЧание
В.FCL.также.присутствует.конструкция.ReaderWriterLock,.появившаяся.еще.в.Microsoft.
NET.Framework.1 0 .Она.была.настолько.проблемной,.что.в.версию.3 5.разра-
ботчики.Microsoft.ввели.конструкцию.ReaderWriterLockSlim .Менять.конструкцию.
ReaderWriterLock.они.не.стали,.чтобы.не.потерять.совместимости.с.использующими.
ее.приложениями .Данная.конструкция.работает.крайне.медленно.даже.в.отсутствии.
конкуренции.потоков .Она.не.позволяет.отказаться.от.владения.потоком.и.рекурсив-
ного.поведения,.еще.сильнее.замедляющих.блокирование .Потоки.чтения.имеют.
в.этой.конструкции.приоритет.перед.потоками.записи,.что.может.привести.к.про-
блемам.типа.«отказ.в.обслуживании» 

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   640   641   642   643   644   645   646   647   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish