Форум: "Основная";
Текущий архив: 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.031 c