Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Организовать последовательное выполнение приложений   Найти похожие ветки 

 
Романов Р.В. ©   (2004-04-20 12:43) [0]

При запуске нескольких копий приложения нужно сделать так что бы они выполнялись(т.е. выполняли какие то полезные действия) по очереди. А до завершения предыдущего запущенного приложения они крутятся в пустом цикле.
Т.е. задача организовать среди запущенных приложений очередь.
Какие идеи будут?


 
Романов Р.В. ©   (2004-04-20 12:43) [0]

При запуске нескольких копий приложения нужно сделать так что бы они выполнялись(т.е. выполняли какие то полезные действия) по очереди. А до завершения предыдущего запущенного приложения они крутятся в пустом цикле.
Т.е. задача организовать среди запущенных приложений очередь.
Какие идеи будут?


 
Reindeer Moss Eater ©   (2004-04-20 12:43) [1]

например запускать последовательно сами приложения


 
Reindeer Moss Eater ©   (2004-04-20 12:43) [1]

например запускать последовательно сами приложения


 
Skier ©   (2004-04-20 12:45) [2]


> Какие идеи будут?

Стандартная проблема : "Запустить приложение и дождаться его завершения". Ответов полно. В том числе и здесь...


 
Skier ©   (2004-04-20 12:45) [2]


> Какие идеи будут?

Стандартная проблема : "Запустить приложение и дождаться его завершения". Ответов полно. В том числе и здесь...


 
Романов Р.В. ©   (2004-04-20 12:53) [3]

Надо сделать так что бы они выполнялись в той же последовательности в какой были запущены.


 
Романов Р.В. ©   (2004-04-20 12:53) [3]

Надо сделать так что бы они выполнялись в той же последовательности в какой были запущены.


 
Reindeer Moss Eater ©   (2004-04-20 12:54) [4]

Они выполняются как ОС на душу положит, а не в той последовательности как их запускали.


 
Reindeer Moss Eater ©   (2004-04-20 12:54) [4]

Они выполняются как ОС на душу положит, а не в той последовательности как их запускали.


 
Тимохов ©   (2004-04-20 12:57) [5]

можно воспользоваться средствами межпроцесного взаимодействия.
например использовать mutex.


 
Тимохов ©   (2004-04-20 12:57) [5]

можно воспользоваться средствами межпроцесного взаимодействия.
например использовать mutex.


 
Романов Р.В. ©   (2004-04-20 13:01) [6]


> Тимохов

Если не затруднит опиши (просто словами) алгоритм использования mutex применительно к этой задаче.


 
Романов Р.В. ©   (2004-04-20 13:01) [6]


> Тимохов

Если не затруднит опиши (просто словами) алгоритм использования mutex применительно к этой задаче.


 
Reindeer Moss Eater ©   (2004-04-20 13:04) [7]

Одним мьютексом здесь не обойтись.
Надо N-1 мьютексов


 
Reindeer Moss Eater ©   (2004-04-20 13:04) [7]

Одним мьютексом здесь не обойтись.
Надо N-1 мьютексов


 
Тимохов ©   (2004-04-20 13:05) [8]


> Романов Р.В. ©   (20.04.04 13:01) [6]

Гарантировать, что проги будут выполнятся в том порядке в котором они были запущены (из проводника) думаю не возможно. Порядок будет определяться тем, кто первый дошел до первой строки после begin в dpr.

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

ЗЫ. Я бы сделал запуст всех приложений из другого (тоже вашего). В этом случае можно обеспечить очередь.


 
Тимохов ©   (2004-04-20 13:05) [8]


> Романов Р.В. ©   (20.04.04 13:01) [6]

Гарантировать, что проги будут выполнятся в том порядке в котором они были запущены (из проводника) думаю не возможно. Порядок будет определяться тем, кто первый дошел до первой строки после begin в dpr.

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

ЗЫ. Я бы сделал запуст всех приложений из другого (тоже вашего). В этом случае можно обеспечить очередь.


 
Тимохов ©   (2004-04-20 13:05) [9]


> Reindeer Moss Eater ©   (20.04.04 13:04) [7]

точно
причем именованными


 
Тимохов ©   (2004-04-20 13:05) [9]


> Reindeer Moss Eater ©   (20.04.04 13:04) [7]

точно
причем именованными


 
Silver Alex ©   (2004-04-20 13:14) [10]

Можно создать отображаемый файл в памяти
Создать с помощью функции
mainhandle: THandle;
mainhandle:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE, 0,255,"MainFile")
, затем  получить указатель с помощью функции MapViewOfFile mainpointer:Pointer;
mainpointer:= MapViewOfFile( mainhandle, FILE_MAP_ALL_ACCESS,0,0,0)
ну а с указателем уже придумешь что надо, можешь туда записать что хочешь.Очередь там или чего надо.Это будет один для всех приложений файл, с ним и работай.

Ну и закрыть конечно надо потом.
UnMapViewOfFile(mainpointer);
CloseHandle(mainhandle);

Ну смысл я думаю понятен, попробуй может подойдет.


 
Silver Alex ©   (2004-04-20 13:14) [10]

Можно создать отображаемый файл в памяти
Создать с помощью функции
mainhandle: THandle;
mainhandle:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE, 0,255,"MainFile")
, затем  получить указатель с помощью функции MapViewOfFile mainpointer:Pointer;
mainpointer:= MapViewOfFile( mainhandle, FILE_MAP_ALL_ACCESS,0,0,0)
ну а с указателем уже придумешь что надо, можешь туда записать что хочешь.Очередь там или чего надо.Это будет один для всех приложений файл, с ним и работай.

Ну и закрыть конечно надо потом.
UnMapViewOfFile(mainpointer);
CloseHandle(mainhandle);

Ну смысл я думаю понятен, попробуй может подойдет.


 
kudatsky   (2004-04-20 13:15) [11]

Используй процедуру FileExecuteWait из RxLib


 
kudatsky   (2004-04-20 13:15) [11]

Используй процедуру FileExecuteWait из RxLib


 
Anatoly Podgoretsky ©   (2004-04-20 13:20) [12]

Управляющиее приложение, посылающие приказ энному "давай работай и доложи когда кончишь", в цикле по Н процессов. Запусапть подчиненные процессы можно в любом порядке одновременно или как бог на душу положит. Диспетчер разберется что кому и когда делать. Мьютексы не нужны.


 
Anatoly Podgoretsky ©   (2004-04-20 13:20) [12]

Управляющиее приложение, посылающие приказ энному "давай работай и доложи когда кончишь", в цикле по Н процессов. Запусапть подчиненные процессы можно в любом порядке одновременно или как бог на душу положит. Диспетчер разберется что кому и когда делать. Мьютексы не нужны.


 
Романов Р.В. ©   (2004-04-20 13:21) [13]

Тимохов ©   (20.04.04 13:05) [8]
Соревнование среди запущенных почти одновременно копий - частный случай и при нормальной работе не должен возникать.

Если приложение убили через Ctrl+Alt+Del, то мьютекс точно умрет или может остаться?


 
Романов Р.В. ©   (2004-04-20 13:21) [13]

Тимохов ©   (20.04.04 13:05) [8]
Соревнование среди запущенных почти одновременно копий - частный случай и при нормальной работе не должен возникать.

Если приложение убили через Ctrl+Alt+Del, то мьютекс точно умрет или может остаться?


 
Тимохов ©   (2004-04-20 13:24) [14]


> Романов Р.В. ©   (20.04.04 13:21) [13]

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

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


 
Тимохов ©   (2004-04-20 13:24) [14]


> Романов Р.В. ©   (20.04.04 13:21) [13]

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

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


 
Романов Р.В. ©   (2004-04-20 13:30) [15]

Есть приложение типа планировщика, которое запускает различные задачи. Задача - приложение, которое может выполнять определенные действия. Некоторые из этих приложений не должны быть выполнены пока не будет закончена работа предыдущей копии приложения. Считаю нерациональным вставлять в планировщик функцию анализа на возможность совместного запуска каких то приложений. Приложения сами между собой должны договариваться


 
Романов Р.В. ©   (2004-04-20 13:30) [15]

Есть приложение типа планировщика, которое запускает различные задачи. Задача - приложение, которое может выполнять определенные действия. Некоторые из этих приложений не должны быть выполнены пока не будет закончена работа предыдущей копии приложения. Считаю нерациональным вставлять в планировщик функцию анализа на возможность совместного запуска каких то приложений. Приложения сами между собой должны договариваться


 
Тимохов ©   (2004-04-20 13:32) [16]


> Считаю нерациональным вставлять

Почему?
Так у вас оказывается есть управляющее приложение.
Что может быть проще:
1. ЗАпустить
2. Подождать окончания
3. Запустить следующее

делов на 10 минут.


 
Тимохов ©   (2004-04-20 13:32) [16]


> Считаю нерациональным вставлять

Почему?
Так у вас оказывается есть управляющее приложение.
Что может быть проще:
1. ЗАпустить
2. Подождать окончания
3. Запустить следующее

делов на 10 минут.


 
Silver Alex ©   (2004-04-20 13:50) [17]


> Романов Р.В. ©

Не понятно в чем состоит задача?В том что бы приложения общались между собой?Так в чем сложность


 
Silver Alex ©   (2004-04-20 13:50) [17]


> Романов Р.В. ©

Не понятно в чем состоит задача?В том что бы приложения общались между собой?Так в чем сложность


 
Романов Р.В. ©   (2004-04-20 13:50) [18]

Основное требование к этому планировщику что бы он мог запустить несколько приложений (в том числе и на нескольких ПК) и контролировать их выполнение.
Есть 2 причины ставить приложения в очереди
1. Они используют результаты предыдущей копии.
 В этом случае очередь организуется и управляется планировщиком.
2. Оптимально использовать ресурсы ПК (например одновременное обращение к HDD или CD нескольких приложений сделать последовательным).
Довольно сложно отследить какие приложения не рекомендуется запускать одновременно. Поэтому проще предоставить им самим разбираться между собой.


 
Романов Р.В. ©   (2004-04-20 13:50) [18]

Основное требование к этому планировщику что бы он мог запустить несколько приложений (в том числе и на нескольких ПК) и контролировать их выполнение.
Есть 2 причины ставить приложения в очереди
1. Они используют результаты предыдущей копии.
 В этом случае очередь организуется и управляется планировщиком.
2. Оптимально использовать ресурсы ПК (например одновременное обращение к HDD или CD нескольких приложений сделать последовательным).
Довольно сложно отследить какие приложения не рекомендуется запускать одновременно. Поэтому проще предоставить им самим разбираться между собой.


 
Anatoly Podgoretsky ©   (2004-04-20 13:53) [19]

Так у вас еще и сеть, одназначно клиент-приложения с сервер-диспетчером.


 
Anatoly Podgoretsky ©   (2004-04-20 13:53) [19]

Так у вас еще и сеть, одназначно клиент-приложения с сервер-диспетчером.


 
Андрей Сенченко ©   (2004-04-20 14:14) [20]

Романов Р.В. ©   (20.04.04 12:43)  

Глубокое ИМХО.
Если приложения, о которых Вы ведете речь - Ваши же самописки, то самым простым и безболезненным способом будет
Anatoly Podgoretsky ©   (20.04.04 13:53) [19]

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


 
Андрей Сенченко ©   (2004-04-20 14:14) [20]

Романов Р.В. ©   (20.04.04 12:43)  

Глубокое ИМХО.
Если приложения, о которых Вы ведете речь - Ваши же самописки, то самым простым и безболезненным способом будет
Anatoly Podgoretsky ©   (20.04.04 13:53) [19]

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


 
Anatoly Podgoretsky ©   (2004-04-20 14:18) [21]

Все равно диспетчер, только приказы приложениям не получится отдавать, но можно будет запускать как паралельно, так по очереди, как с ожиданием, так и без. И все через CreateProcess + для сети на кажжом компьютере приемник/передатчик для синхронизации и передаче результатов в центр.


 
Anatoly Podgoretsky ©   (2004-04-20 14:18) [21]

Все равно диспетчер, только приказы приложениям не получится отдавать, но можно будет запускать как паралельно, так по очереди, как с ожиданием, так и без. И все через CreateProcess + для сети на кажжом компьютере приемник/передатчик для синхронизации и передаче результатов в центр.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.039 c
1-1082401016
tivispider
2004-04-19 22:56
2004.05.09
помогите оптимизировать код


14-1082575432
windows
2004-04-21 23:23
2004.05.09
инет через другой комп


7-1080213943
jetty
2004-03-25 14:25
2004.05.09
Секундомер (от системного таймера)


3-1081586401
Laymer
2004-04-10 12:40
2004.05.09
Lookup в DBE


14-1082357056
Sectey
2004-04-19 10:44
2004.05.09
Помогите найти Банников Н.А.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский