|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devдостаточно запустить эту подсистему в разных потоках по количеству привязок Мнда... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2019, 17:17 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Basil A. SidorovСделай патч, если это так тривиально - делов-то ...Не выйдет! Обёртка на виртуальных методах C++. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2019, 21:58 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovrdb_devдостаточно запустить эту подсистему в разных потоках по количеству привязок Мнда...Ты знаешь другой способ "слушать" сокеты? Я таких не знаю... Даже реализация под вендой через сообщения, мьютексы и т.д. является лишь обёрткой, работающей с сокетами в отдельном потоке через стандартный сишный API. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2019, 22:02 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devТы знаешь другой способ "слушать" сокеты? select() в одном потоке. Или WSAEventSelect(), но у него есть свои мухи на большом количестве сокетов и высокой нагрузке. В свежих версиях они пилят epoll(), но он ещё глючит. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2019, 22:06 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, мелкософтовая WSAEventSelect(), это, как раз, та самая обёртка, о которой я писал. На мой взгляд, лучше крутить опрос сокетов "вручную" и для разных привязок использовать разные потоки, чтобы вносить в имеющийся код меньше переделок и, в большинстве случаев, использовать один поток опроса на один буфер адаптера. Ко всему прочему, вчера я наткнулся на конфликт firebird.conf, когда проверял соединение с отключенным шифрованием. Если клиенты для 2.5.9 и 4.0b1 находятся в одном каталоге под разными именами и там же лежит firebird.conf для 4.0b1, клиент 2.5.9 отказывается подключаться, но как только убираешь из файла firebird.conf все активные параметры, кроме тех, которых нет в 2.5.9 или вовсе удаляешь файл firebird.conf, то подключение происходит нормально. Казалось бы, fbclient должен читать тот firebird.conf, что на уровень выше, а нет... Таким образом, параметр с привязками, игнорируемый клиентом и перекрывающий для сервера старые параметры привязки, стал бы решением. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 10:07 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devмелкософтовая WSAEventSelect(), это, как раз, та самая обёртка, о которой я писал А, значит ты как обычно писал нагугленную чушь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 12:15 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devКазалось бы, fbclient должен читать тот firebird.conf, что на уровень выше, а нет... понимания изменений FB 3.0+ под виндой. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 12:40 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Basil A. Sidorovrdb_devКазалось бы, fbclient должен читать тот firebird.conf, что на уровень выше, а нет... понимания изменений FB 3.0+ под виндой.Я, таки, не понял, что ты имеешь в виду. Разве fbclient 2.5.x не хавает firebird.msg и firebird.conf каталогом выше, при том, что fbclient 3.0+ привычно хавает те же файлы в том же каталоге, где находится сам? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:05 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovrdb_devмелкософтовая WSAEventSelect(), это, как раз, та самая обёртка, о которой я писал А, значит ты как обычно писал нагугленную чушь.Нет, это моё личное мнение исходя из наблюдений работы этой функции. Мелкософт упростила жизнь разработчикам, написав за них эту обёртку и собрав её в ту же библиотеку, что и Беркли сокеты - ws2_32.dll. Чудес не бывает... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:23 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devэто моё личное мнение исходя из наблюдений работы этой функции И тебя не смущает, что она оперирует очередью событий непосредственно из драйвера, а потому несёт больше информации чем select(), который, по твоим словам, она оборачивает?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:32 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, из драйвера чего? Сетевой карты? Ты уверен в том, что тоже самое сообщение из драйвера насквозь прилетает в event object? Зачем же тогда функция WSAEventSelect переводит сокеты в nonblocking mode, если получает всю необходимую информацию прямо из драйвера? "The WSAEventSelect function automatically sets socket s to nonblocking mode, regardless of the value of lNetworkEvents. To set socket s back to blocking mode, it is first necessary to clear the event record associated with socket s via a call to WSAEventSelect with lNetworkEvents set to zero and the hEventObject parameter set to NULL. You can then call ioctlsocket or WSAIoctl to set the socket back to blocking mode." ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:40 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devЗачем же тогда функция WSAEventSelect переводит сокеты в nonblocking mode, если получает всю необходимую информацию прямо из драйвера? Хороший вопрос на который я не знаю ответа. А у тебя есть ответ зачем нужен неблокирующий режим при использовании унутре select-а? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:49 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, конечно есть! Чтобы в цикле по сокетам дёргать POSIX функции сокетов, которые тут же возвращают состояние и анализируя эти состояния посылать те или иные windows messages соответствующим event objects. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:55 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, У него на любой вопрос всегда есть любой ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 13:57 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, разница между WSAEventSelect() и select() лишь в том, что в первом случае ьы получаешь два параллельных цикла - в WSAEventSelect() и в WSAWaitForMultipleEvents(), а во втором случае - два последовательных цикла, первый, собственно, в select(), а второй - свой цикл, в котором нужно обработать массив после выхода из select(). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:08 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devЧтобы в цикле по сокетам дёргать POSIX функции сокетов, которые тут же возвращают состояние и анализируя эти состояния посылать те или иные windows messages соответствующим event objects. Прелестно, но в каком потоке крутится этот цикл и почему его не видно в стэке вызовов? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:08 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, как это "не видно"? WSAEventSelect крутит цикл в том же потоке из которого ты её вызвал. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:15 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devкак это "не видно"? Да вот так: я смотрю в Call Stack моего процесса в Process Explorer и не вижу ни цикла, ни потребляемых тиков процессора. rdb_devWSAEventSelect крутит цикл в том же потоке из которого ты её вызвал. WSAEventSelect вызывается для сокета ровно один раз и сразу возвращает управление мне. Дальше всюду работает мой код. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:18 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovrdb_devкак это "не видно"? Да вот так: я смотрю в Call Stack моего процесса в Process Explorer и не вижу ни цикла, ни потребляемых тиков процессора. rdb_devWSAEventSelect крутит цикл в том же потоке из которого ты её вызвал. WSAEventSelect вызывается для сокета ровно один раз и сразу возвращает управление мне. Дальше всюду работает мой код. Возможно, я перепутал работу этой функции с работой какой-то другой обёртки сокетов от MS, но принципиально это ничего не меняет - всегда есть некий массив хэндлов сокетов, по которому в цикле кто-то пробегает и опрашивая состояния неблокируемых сокетов инициирует те или иные действия меняющие состояния неких структур, отражающих состояния сокетов, а как ты анализируешь эти состояния - пробегая по массиву fd_set или по массиву объектов WSAEVENT, это уже малосущественные детали реализации. Как я уже говорил - тут чудес не бывает (если ты не используешь собственный NDIS драйвер). ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:46 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devвсегда есть некий массив хэндлов сокетов, по которому в цикле кто-то пробегает и опрашивая состояния неблокируемых сокетов инициирует те или иные действия меняющие состояния неких структур, отражающих состояния сокетов То есть вариант таблицы сокетов к которым внутри привязана очередь и эвент, которые заполняются/взводятся непосредственно после приёма пакета тебе даже в голову не приходит?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 14:56 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, неа. Само по себе ничего не взводится. Всегда где-то существует цикл, пробегающий по некоему ассоциативному массиву хэндлов неблокируемых сокетов и неких структур, в которых отмечается состояние сокетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 15:05 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, по всей видимости, WSAEventSelect() используется лишь как инструмент для добавления пары socket handle/event object к ассоциативному массиву некой обёртки, внутри которой и крутится цикл, опрашивающий состояния неблокируемых сокетов и меняющий состояния ассоциированных с ними event objects. Потому WSAEventSelect() и переводит сокеты в неблокируемый режим, чтобы у обёртки была возможность при вызове некоей внутренней реализации чего-то, похожего на вызов select() с параметром timeout, указывающим на TIMEVAL{0,0}. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2019, 15:28 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
rdb_devКак я уже говорил - тут чудес не бывает (если ты не используешь собственный NDIS драйвер).Проблема только в том, что MS "кое-что меняла" и в драйверах и "вокруг них". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 02:33 |
|
Напрягает разрыв соединения после гибернации. С этим что-то можно сделать?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, "кое-что" 1 , MS, конечно, меняла, а что-то 2 даже добавила, но тесной интеграции пользовательских процессов с ядром ждать точно не стоит. --- 1 What's New for Windows Sockets 2 Registered Input/Output (RIO) API Extensions ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2019, 11:54 |
|
|
start [/forum/topic.php?fid=40&msg=39850737&tid=1560613]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 242ms |
0 / 0 |