Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ассинхронный ввод-вывод 
:(
    Опции темы
zss
Дата 1.3.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



скажите пожалуйста что лучше использовать
1. асинхронные операции ввода-вывода
2. или синхронные, но в разных потоках (многопоточное приложение)

что более предпочтительние ?
PM MAIL ICQ   Вверх
Romikgy
Дата 1.3.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(zss @ 1.3.2006, 15:35 Найти цитируемый пост)
что более предпочтительние ?

для кого?/чего?
имхо для проца асинхроность лучше smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
zss
Дата 1.3.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



Цитата(Romikgy @ 1.3.2006, 16:39 Найти цитируемый пост)
для кого?/чего?


для удобства и производительности smile



Цитата(Romikgy @ 1.3.2006, 16:39 Найти цитируемый пост)
имхо для проца асинхроность лучше

обоснуй smile
PM MAIL ICQ   Вверх
Romikgy
Дата 1.3.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



каждый новый поток , кушает часть процессорного времени,
асинхроность - ожидание события, проц здесь не задействован
ИМХО


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
zss
Дата 1.3.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



Цитата(Romikgy @ 1.3.2006, 17:00 Найти цитируемый пост)
каждый новый поток , кушает часть процессорного времени,
асинхроность - ожидание события, проц здесь не задействован
ИМХО


мне немного не понятен механизм.
Когда событие произойдет - произойдет вызов отложенной функции.
Этот вызов будет в отдельном потоке, или просто приостановится мой код
до того как отработает отложенная функция ?

PM MAIL ICQ   Вверх
Romikgy
Дата 1.3.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(zss @ 1.3.2006, 16:14 Найти цитируемый пост)
Когда событие произойдет - произойдет вызов отложенной функции.
Этот вызов будет в отдельном потоке, или просто приостановится мой код
до того как отработает отложенная функция ?

непонял smile
если ф-ция синхроная, то ее и выносят в отдельный поток, чтобы не тормозил основной, если асинхроная, то выполнение программы выполняется дальше, а вызывается ф-ция отдельно прописаная как колбек
Или мож я тя не понял?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
zss
Дата 1.3.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



Цитата(Romikgy @ 1.3.2006, 17:28 Найти цитируемый пост)
а вызывается ф-ция отдельно прописаная как колбек


так я пронее и говорю- ее система вызывает после завершения операции ввода-вывода. Но вызывает в отдельном (системном потоке с повышенным приоритетом) или просто приостанавливает основной код и передает управление на коллбэк функцию ?

PM MAIL ICQ   Вверх
Romikgy
Дата 1.3.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Может я и не прав, гуру поправят, но мне кажется , что происходит нечто похожее на обработку сообщений винды, т.е. код постояно опрашивает произошло событие или нет, если произошло , то вызываем колбек, но это имхо делает система


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
zss
Дата 2.3.2006, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 708
Регистрация: 17.6.2004

Репутация: 1
Всего: 2



Цитата(Romikgy @ 1.3.2006, 17:52 Найти цитируемый пост)
но это имхо делает система

понятно, что система - немного не понятно с помощью каких механизмов

у меня все-таки есть подозрение, что в отдельном потоке с повышенным приоритетом

может кто точно пояснит ?
PM MAIL ICQ   Вверх
comcon1
Дата 2.3.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: 12
Всего: 17



В Линухе я бы словил сигнал, пришедший от потока, занимавшегося вводом-выводом...


--------------------
PM MAIL   Вверх
adonin
Дата 2.3.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 16.12.2005
Где: Новочеркасск Рост овская обл.

Репутация: 2
Всего: 5



Новый поток при этом не создаётся. Используется механизм APC.

После обработки прерывания (осуществляется в нулевом кольце привилегий)
диспетчер ввода/вывода (часть ядра ОС) ставит в очередь АРС-объект (Asynchronous Procedure Call - асинхронный вызов процедуры) для завершения ввода/вывода в контексте потока - инициатора запроса. (Подсистема ввода/вывода должна скопировать некоторые данные из системной области памяти в виртуальное адресное пространство процесса, поток которого инициировал запрос ввода/вывода, во время исполнения такого потока, это достигается путем пересылки АРС-объекта режима ядра в очередь АРС-объек-тов этого потока.)

Когда поток - инициатор запроса, начнет исполняться в следующий раз, то возникнет прерывание обработки асинхронного вызова процедуры. Диспетчер прерываний передает управление процедуре АРС режима ядра (процедуре АРС диспетчера ввода/вывода).

Процедура АРС режима ядра записывает данные в адресное пространство потока-инициатора запроса, устанавливает описатель файла в состояние «свободен», устанавливает в очередь на исполнение АРС-объект пользовательского режима (если нужно) и удаляет IRP.

APC процедуры ваполняются на уровне IRQL=APC_LEVEL.
APC пользовательского режима выполняется в контексте потока - инициатора запроса ввода-вывода.
См. Рисунок.

Это сообщение отредактировал(а) adonin - 2.3.2006, 13:03

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  asd.gif 18,60 Kb
--------------------
Тот, кто слизывает мед с крапивы, платит за него слишком дорого. (Томас ФУЛЛЕР)
PM MAIL   Вверх
maxim1000
Дата 2.3.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



ну еще можно добавить, что это происходит не в любом месте выполнения потока: он должен быть в alertable state (для этого можно использовать, например, функцию SleepEx)


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.