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



Download 6,27 Mb.
Pdf ko'rish
bet606/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   602   603   604   605   606   607   608   609   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

Проблемы FileStream
При создании объекта 
FileStream
флаг 
FileOptions.Asynchronous
позволяет ука-
зать, какие операции — синхронные или асинхронные — будут использоваться для 
взаимодействия (что эквивалентно вызову Win32-функции 
CreateFile
и передаче 
ей флага 
FILE_FLAG_OVERLAPPED
). При отсутствии этого флага Windows выполняет 
все операции с файлом в синхронном режиме. Разумеется, ничто не мешает вызвать 
метод 
ReadAsync
объекта 
FileStream
. С точки зрения приложения это выглядит как 
асинхронное выполнение операций, но на самом деле класс 
FileStream
эмулирует 
асинхронное поведение при помощи дополнительного потока, который впустую 
тратит ресурсы и снижает производительность.
В то же время можно создать объект 
FileStream
, указав флаг 
FileOptions.
Asynchronous
. После этого вы можете вызвать метод 
Read
объекта 
FileStream
для 
выполнения синхронной операции. Класс 
FileStream
эмулирует такое поведение, 
запуская асинхронную операцию и немедленно переводя вызывающий поток в спя-
щий режим до завершения операции. Это тоже не самый эффективный способ, но он 


817
Приоритеты.запросов.ввода-вывода
лучше, чем вызов метода 
BeginRead
с применением объекта 
FileStream
, созданного 
без флага 
FileOptions.Asynchronous
.
Подведем итоги. При работе с объектом 
FileStream
следует заранее выбрать, 
синхронным или асинхронным будет ввод-вывод файлов, и установить флаг 
FileOptions.Asynchronous
(или не делать этого). Если флаг установлен, всегда 
вызывайте метод 
ReadAsync
, а если нет — метод 
Read
. Это обеспечит наилучшую 
производительность. Если вы собираетесь выполнить синхронную или асинхронную 
операцию с объектом 
FileStream
, эффективней всего конструировать данный объ-
ект с флагом 
FileOptions.Asynchronous
. В качестве альтернативы можно создать 
два объекта 
FileStream
для одного файла. Один объект 
FileStream
будет открыт 
для асинхронного ввода-вывода, второй — для синхронного. Учтите, что класс 
System.IO.File
содержит вспомогательные методы (
Create

Open
и 
OpenWrite
), 
которые создают и возвращают объекты 
FileStream
. Во внутренней реализации 
ни один из этих методов не использует флаг 
FileOptions.Asynchronous
, поэтому 
для построения масштабируемых приложений с хорошим временем отклика от 
этих методов лучше держаться подальше.
Следует также помнить, что драйвер устройства файловой системы NTFS вы-
полняет некоторые операции в синхронном режиме вне зависимости от способа 
открытия файла. Дополнительную информацию по этой теме вы найдете по адресу 
http://support microsoft com/default aspx?scid=kb%3Ben-us%3B156932
.

Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   602   603   604   605   606   607   608   609   ...   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