Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Панели в отдельных потоках

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
jksgfv



Joined: 21 May 2006
Posts: 2

Post (Separately) Posted: Sun May 21, 2006 16:30    Post subject: Панели в отдельных потоках Reply with quote

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

Есть ли вообще такая возможность у командира? Если нет, то возможно ли появление таковой в будущем?

 !  Avada:
Перемещено из Секретов и советов в Общие вопросы.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Sun May 21, 2006 17:42    Post subject: Reply with quote

Увы, нет. Где-то на оф. форуме это обсуждалось, Гислер сказал, что он исследовал этот вопрос, и выяснил, что при обращении к сетевому ресурсу винда подвешивает всё приложение целиком, а не только поток, запросивший этот ресурс.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
jksgfv



Joined: 21 May 2006
Posts: 2

Post (Separately) Posted: Sun May 21, 2006 18:14    Post subject: Reply with quote

Ну пущай тада засунет панельки в отдельные процессы! =]

А всё-таки жаль...
Back to top
View user's profile Send private message
Стас Агарков



Joined: 05 Feb 2007
Posts: 130
Location: Белгород

Post (Separately) Posted: Sun Apr 01, 2007 20:29    Post subject: Reply with quote

Бывает, что медленно считывается список файлов с флешки или с CD/DVD-ROM, если, например, он сильно поцарапанный. При этом весь TC блокируется. Например, при работе с FTP во время перехода в каталог, то блокируется весь TC. Каждой панели (каждой вкладке) выделить отдельный поток, думаю, не помешает.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Sun Apr 01, 2007 20:38    Post subject: Reply with quote

Стас Агарков wrote:
Каждой панели (каждой вкладке) выделить отдельный поток, думаю, не помешает.

Это невозможно. Есть проблемы с многопоточностью в различных функциях: FS-плагины, архиваторы и архиваторные плагины... Например, если в двух панелях открыть одновременно RAR-архивы, и это открытие будет обрабатываться отдельными потоками, то содержимое архивов будет отображаться некорректно: два потока "перепутают" данные друг друга - это проблема библиотеки распаковки unrar.dll.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
GeNtlE



Joined: 16 Dec 2004
Posts: 141
Location: Россия, Чита

Post (Separately) Posted: Sun Apr 01, 2007 20:42    Post subject: Reply with quote

А что мешает Тоталу запускать отдельный процесс для проверки доступности какой-либо папки (шары, компакт-диска). Пусть он там висит, хоть зависится. Ждать от него репорта о готовности папки, при этом, заблокировав только активную панель и оставить возможность отменить операцию посредством Esc.
_________________
Новые версии SM2BT здесь.
Back to top
View user's profile Send private message
Стас Агарков



Joined: 05 Feb 2007
Posts: 130
Location: Белгород

Post (Separately) Posted: Sun Apr 01, 2007 20:56    Post subject: Reply with quote

Можно загрузить несколько unrar.dll, по одной в каждом потоке?
P.S. Даже, когда TC значки загружает с CD/DVD, то весь TC подвисает.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Sun Apr 01, 2007 21:06    Post subject: Reply with quote

GeNtlE wrote:
А что мешает Тоталу запускать отдельный процесс для проверки доступности какой-либо папки (шары, компакт-диска).

Межпроцессное взаимодействие гораздо более сложное и громоздкое (и ресурсоотъедающее), чем межпоточное. При обсуждении одного вопроса Гислер даже лишний поток добавлять не хотел, дабы не нагружать систему пользователя - а тут аж целый процесс предлагается (да ещё и не один). Нет, он на такое ни за что не пойдёт. Вот разве что для фонового поиска... Да и то пока непонятно с ним.

Стас Агарков wrote:
Можно загрузить несколько unrar.dll, по одной в каждом потоке?

Нельзя. Все потоки живут в одном адресном пространстве (что, собственно, и делает их более легковесными по сравнению с процессами), и при попытке загрузить одну и ту же DLL второй раз (пусть даже и в другом потоке того же процесса) ничего не произойдёт, попросту вернётся дескриптор той же самой, уже загруженной в память DLL.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
GeNtlE



Joined: 16 Dec 2004
Posts: 141
Location: Россия, Чита

Post (Separately) Posted: Sun Apr 01, 2007 21:15    Post subject: Reply with quote

CaptainFlint wrote:
Межпроцессное взаимодействие гораздо более сложное и громоздкое (и ресурсоотъедающее), чем межпоточное. При обсуждении одного вопроса Гислер даже лишний поток добавлять не хотел, дабы не нагружать систему пользователя - а тут аж целый процесс предлагается (да ещё и не один).
Где я предлагал добавить много процессов? Маленькая специальная утилита, которая будет проверять доступность папки. Он же ввёл утилиту TCAdmin. Всё. Панелей у нас две, значит, максимум, что мы будем иметь в экстремальном случае, когда пользователей полезет в сеть из двух панелей сразу, это неподвисший Тотал с замороженными панелями и двумя процессами.
_________________
Новые версии SM2BT здесь.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Sun Apr 01, 2007 21:34    Post subject: Reply with quote

GeNtlE wrote:
Панелей у нас две, значит, максимум, что мы будем иметь в экстремальном случае, когда пользователей полезет в сеть из двух панелей сразу, это неподвисший Тотал с замороженными панелями и двумя процессами.

У пользователя есть ещё вкладки. И в каждой из них он тоже может захотеть полезть в сеть.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
GeNtlE



Joined: 16 Dec 2004
Posts: 141
Location: Россия, Чита

Post (Separately) Posted: Sun Apr 01, 2007 21:41    Post subject: Reply with quote

Ладно. Про ушки я совсем забыл. Если пользователь хочет лезть в сеть из нескольких вкладок, пусть лезет. О каких ресурсозатратах можно говорить (замедлении работы), если когда Total Commander лезет в сеть самостоятельно, он намертво виснет и работать с ним вообще нельзя.
_________________
Новые версии SM2BT здесь.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Sun Apr 01, 2007 22:06    Post subject: Reply with quote

GeNtlE wrote:
О каких ресурсозатратах можно говорить (замедлении работы), если когда Total Commander лезет в сеть самостоятельно, он намертво виснет и работать с ним вообще нельзя.

Если Тотал подвис, то ясно, что не всё ладно в датском королевстве. А если на каждое действие Тотал будет втихую запускать процесс, не информируя об этом пользователя, то результатом запросто может стать дикое количество процессов, каждый из которых висит в функции обращения к сети и тем самым блокирует другие программы и процессы от доступа в сеть. Такова дебильная реализация работы с сетью в винде: если что-то обратилось к несуществующему компу и зависло, то пока не развиснет, другие обращения к сети (даже к доступным компам) тоже запросто могут зависнуть. В конце концов всё закончится полнейшей блокировкой сети тучей висящих процессов Тотала и, по всей видимости, перезагрузкой компа.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
GeNtlE



Joined: 16 Dec 2004
Posts: 141
Location: Россия, Чита

Post (Separately) Posted: Sun Apr 01, 2007 23:06    Post subject: Reply with quote

Запускать один процесс и поставить на их количество ограничение размером в одну-две штуки. Если в сеть ломился Тотал, а сеть повисла, повиснет и Тотал (пусть даже на время). Если же ввести процесс, то он зависнет, позволяя нам работать с Тотал Коммандером дальше. Ведь тормозится весь процесс со всеми потоками (GUI, копирование и т. д). А пользователя уж как-нибудь оповестить о попытке вылазки в сеть, а потом и об активности/неактивности сетевого подключения и доступности конкретного файла.
_________________
Новые версии SM2BT здесь.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group