Страниц: [1]
  Печать  
Автор Тема: Блокируется MsgSendPulse.  (Прочитано 5395 раз)
vchc
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« : Декабря 18, 2005, 07:08:12 pm »

Приветствую участников форума.

Проблема в том , что иногда функция MsgSendPulse при работе через QNet намертво блокируется и не завершается.
Как я смог выяснить это происходит если канал по которому посылается пульс в определенный момент времени убить.
Состояние заблокированного потока psin показывает как NET-REPLY. Может кто-нибудь прояснить ситуацию?

QNX 6.3.1 SP1
Записан
olej
QOR.Team
****
Offline Offline

Сообщений: 42



Просмотр профиля
« Ответ #1 : Декабря 19, 2005, 11:18:32 am »

vchc
Может кто-нибудь прояснить ситуацию?

А что здесь особенно прояснять? я думаю :
- все SRR-опреации реализованы как сугубо синхронные (в отличие, например, от TCP/IP сетки, где результат write(), например, только означает, что информация благополучно доставлена локальному IP-стеку, хотя, возможно, фактически ещё и не начиналась...);
- операция MsgSend...() должна дождаться фактического завершения акта передачи и получения от приёмной стороны результата завершения, даже если это неблокирующая операция MsgSendPulse() ... а сделать она этого не может;
- это тот эффект, называемый на QOR уже не раз, который: "... странное поведение QNET при реакции на ошибку канала...";
- а детальнее разбираться: как реагировать на возможные ошибки канала в QNET в программном коде, как строить такой код и т.д. - это вопрос, с которым нужно отдельно разбираться (насколько я помню, на QOR его никто не подымал).
Записан
DS
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« Ответ #2 : Декабря 19, 2005, 12:06:03 pm »

Olej
это тот эффект, называемый на QOR уже не раз, который: "... странное поведение QNET при реакции на ошибку канала...";


не совсем в тему, но может натолкнет на... Не знаю на что

Несколько лет назад тестировали сеть в qnx4.

Делали три паралельные сети (arcnet, rs-232 и ethernet).
Передавали большой объем данных (не помню уже, реальный файл или printf с перенаправлением в файл на другом узле, может и то и другое, не помню уже, больше 10 лет прошло).

В процессе передачи выдергивали по очереди разъемы (arcnet и rs-232) и наблюдали как передача переключается на следующую в списке сеть. Ethernet не выдергивали.

Потом втыкали все обратно и наблюдали как передача переключается с ethernet на rs-232 и с rs-232 на arcnet.

Никаких проблем не заметили

Повторить этот опыт в qnx4 сейчас возможности нет.
Записан
olej
QOR.Team
****
Offline Offline

Сообщений: 42



Просмотр профиля
« Ответ #3 : Декабря 19, 2005, 12:39:44 pm »

Вопрос поведения QNET (т.е. SRR между хостами) при потере канала, и его реакция на восстановление канала - очень любопытная штука:
1. QNET в QNX4 и QNX6 - очень различающиеся по своей структуре и поведению системы...
2. сделайте QNET QNX6 эксперимент, любопытства ради:
- откроем на панели mqc /net/xxx/root/yyy - файл или каталог...
- оборвём канал ... восстановим канал ...
- обратимся опять к /net/xxx/root/yyy - F3 если это файл, или ls ... - если каталог ... всё ОК.
- а теперь после обрыва попробуйте ls /net или ls/net/xxx... всё зависнет (и весьма надолго, как мне помнится).
в 1-м случае SRR идёт через 3 РМ: io-net - io-net - fs-qnx4 и разрешения (nd,pid,chid) будет разрешаться через 2 procnto (loc + rem), во втором 2 обращения: io-net - io-net, обращения по разрешению (nd,pid,chid) к rem procnto, как я понимаю - не будет...
- по-крайней мере вопрос реакции QNET на потерю-восстановление канала - не освещённая нигде достаточно.
Записан
vchc
Участник
*
Offline Offline

Сообщений: 0


Просмотр профиля
« Ответ #4 : Декабря 22, 2005, 10:04:30 am »

Меня особо не волнует большинство странных реакций QNet.
Но с пульсом особая проблема. Эта функция блокируется на неопределенное время.
Такого с MsgSend пока не замечал. То есть для данной версии системы
ее вообще использовать нельзя.

Буду читать англоязычные конференции может там что-то найду.
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #5 : Декабря 22, 2005, 11:04:53 am »

vchc врядили здесь кто-нибудь поможет, тут надо занать нутро io-net/qnet, так что личше обращайтесь к QSSL
Записан
mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #6 : Декабря 22, 2005, 11:15:40 am »

о!!! помню же что-то было уже http://qnx.org.ru/index.php?option=com_minibb&action=vthread&forum=5&topic=280 5
и в inn.qnx.com пролетало, даже PR вроде оформлен был
Записан
Страниц: [1]
  Печать  
 
Перейти в: