Учебное пособие Казань 018 удк


GetBankFee  ранее. Решением для более сложных случаев является реализация логики  «отката» внутри  catch



Download 2,08 Mb.
Pdf ko'rish
bet42/98
Sana16.12.2022
Hajmi2,08 Mb.
#888158
TuriУчебное пособие
1   ...   38   39   40   41   42   43   44   45   ...   98
Bog'liq
ParVychGafGal

GetBankFee 
ранее. Решением для более сложных случаев является реализация логики 
«отката» внутри 
catch 
или 
finally 
блока. 
Инструкция является атомарной, если она выполняет нераздельно на 
основном процессоре. 
5.7. Mutex 
Еще один инструмент управления синхронизацией потоков представляет 
класс Mutex, также находящийся в пространстве имен System.Threading. 
Данный класс является классом-оболочкой над соответствующим объектом ОС 
Windows "мьютекс". Мьютекс представляет собой взаимно исключающий 
синхронизирующий объект. Это означает, что он может быть получен потоком 
только по очереди. Мьютекс предназначен для тех ситуаций, в которых общий 
ресурс может быть одновременно использован только в одном потоке. 
Допустим, что системный журнал совместно используется в нескольких 
процессах, но только в одном из них данные могут записываться в файл этого 
журнала в любой момент времени. Для синхронизации процессов в данной 


66 
ситуации 
идеально 
подходит 
мьютекс. 
Приобретение 
и 
освобождение 
Mutex
занимает несколько микросекунд - примерно в 50 раз 
медленнее чем 
lock
.
В конструкторе класса Mutex указывается, должен ли мьютексом 
изначально владеть вызывающий поток, и его имя. У Mutex имеется несколько 
конструкторов. Ниже приведены два наиболее употребительных конструктора: 
public Mutex() 
public Mutex(bool initiallyOwned) 
В первой форме конструктора создается мьютекс, которым 
первоначально никто не владеет. А во второй форме исходным состоянием 
мьютекса завладевает вызывающий поток, если параметр 
initiallyOwned
имеет 
логическое значение true. В противном случае мьютексом никто не владеет. 
Для того чтобы получить мьютекс, в коде программы следует вызвать 
метод WaitOne() для этого мьютекса. Метод WaitOne() наследуется классом 
Mutex от класса Thread.WaitHandle. Метод WaitOne() ожидает до тех пор, пока 
не будет получен мьютекс потока из которого он был вызван. Следовательно, 
этот метод блокирует выполнение вызывающего потока до тех пор, пока не 
станет доступным указанный мьютекс. Приведем пример создания и 
использования мьютекса: 
class OneAtATimePlease 

static void Main() 

using (var mutex = new Mutex(false, "Mutex1")) 

if (!mutex.WaitOne(TimeSpan.FromSeconds(3), false)) 

Console.WriteLine("Another app instance is running. Bye!"); 
return; 


67 

RunProgram(); 

Console.ReadLine(); 

 
static void RunProgram() 

Console.WriteLine("Running. Press Enter to exit"); 
Console.ReadLine(); 

}

Download 2,08 Mb.

Do'stlaringiz bilan baham:
1   ...   38   39   40   41   42   43   44   45   ...   98




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