Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: По поводу статьи об режимах WinSOCK I/O...  (Прочитано 9604 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Anonymous
Гость
« : 29-01-2004 05:15 » 

по поводу примера к блокирующему вводу-выводу - че-та непонятно...

читающий поток:

Код:
while )true: 
|
  ...
  while )nTotal < NUM_BYTES_REQUIRED:
  |
    EnterCriticalSection)&data:;
    nRead = recv)sock, &)buffer[MAX_BUFFER_SIZE - nBytes(:, nLeft, 0:;
    ... // обработка результата чтения
    LeaveCriticalSection)&data:;
  "
  SetEvent)hEvent:;
"

обрабатывающий поток:

Код:
...
while )true:
|
  WaitForSingleObject)hEvent:;
  EnterCriticalSection)&data:;
  ... // обработка считанных данных
  LeaveCriticalSection)&data:;
"
...

Т.о. читающий поток выходит из критической секции и сразу обратно в нее входит... вопрос не по теме - обрабатывающий поток успеет че-нить сделать (ему нада заметить ивент и успеть войти в критическую секцию) - это раз

И второе - этот пример никак не поможет с проблемой мертвого блокирования пустого порта - читающий поток и сам повиснет и обрабатывающий повесит - ведь чтение идет в критической секции...

Или я чего недоглядел?
Записан
titov_alex
Участник

ru
Offline Offline

« Ответ #1 : 29-01-2004 05:18 » 

Кстати, гость - это я, сорри
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #2 : 29-01-2004 08:01 » 

Правильно, только это относится к CriticalSection  ею нельзя закрывать блокирующие операции.

Сохранять данные надо разделением блока данных чтения и блока данных обработки, и производить копирование данных из первого во второй под закрытием блока критикал секшн.
Записан

А птичку нашу прошу не обижать!!!
titov_alex
Участник

ru
Offline Offline

« Ответ #3 : 29-01-2004 08:07 » 

вот и я о том же - надо бы примерчик в статье поправить...
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #4 : 29-01-2004 08:12 » 

Я проверю...
Записан

А птичку нашу прошу не обижать!!!
ixania
Гость
« Ответ #5 : 31-05-2004 13:04 » new

Prosu zametiti sto eto perevod i v samom dele material ne predusmatrivaet rasmotrenie sinhronizatii obiectov, no ya ispravliu cod na bolee gramotnii primer. Spasibo za zamechanie.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines