![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
Доброго времени суток товарищи!!!
Начну описывать проблему с самого начала (возможно в каких нибудь моментах вы меня подправите). Итак, задачу я себе поставил (в учебных целях) попытаться создать систему распределенных вычислений. Для себя представляю решение в виде клиент-серверной концепсии. Сервер раздает задачи клиентам... (вот тут один из спорных моментов ) я хотел в виде DLL и пусть типо в отдельных нитях клиенты их обратабатывают, но препод посоветовал типо пусть задачи в виде exe-шников раздает и те будут результаты вычислений в файл записывать и эти данные из файла потом будет клиентская программа доставать и высылать серваку. И вот собственно вопрос... Допустим для создания дочернего процесса я использую ShellExecute, а вот потом как мне "отловить" момент (событие) конца выполнения EXE-шника, что бы потом клиентская программа "с чистой совестью" молга взять данные и выслать???
Помог? Ну так нажми на весы!
![]() Последний раз редактировалось mihali4; 10.12.2009 в 00:25. |
![]() |
![]() |
![]() |
#2 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
![]() Я, например, (в целях безопасности своей системы), могу только скачать некий "вычислительный" блок, но запускать его я буду по своему желанию, когда он не будет мне мешать. И выхода в инет я ему не дам! (Это помимо всяческих его проверок...) А результаты буду отсылать опять-таки, когда моя левая нога этого возжелает... И ничего "отлавливать" я вам не позволю! Так преподу своему и скажите... Последний раз редактировалось mihali4; 16.12.2009 в 00:11. |
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
Нуу... а допустим ночь.... вы спите и вы согласны что бы ваш ПК помог кому-нибудь в вычислении и вот бум процесс завершился.... ждать пока ваша левая нога пожлает при том, условии что вы поставили скажем галочку потверждающую то, что в это время вы готовы отдать вычислительные мощности вашего ПК на решение выслаемых задач???
Код:
Препод мотивирует тем, что запуск дочерних процессов отгородит возможность "падения" клиента из-за ошибки в высланной задаче =)))
Помог? Ну так нажми на весы!
![]() Последний раз редактировалось SNUPY; 10.12.2009 в 00:49. |
![]() |
![]() |
![]() |
#4 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
Именно это я и имел в виду, когда упомянул "И выхода в инет я ему не дам!" Участвовал (по дури) в так называемых "распределенных вычислительных сетях". "Хацкеры" на выдумку хитры... (Национальную принадлежность не стоит уточнять? Америкосам ловить нечего. Они, кроме слизанного с НЛО вычислительного блока, ничего своего придумать не могут... Славянские народы - это единственные, кто еще может придумать что-то новое. Кстати, взять хотя бы Великого Теслу...). |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]() Код:
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
#6 | |
Ищу работу
Форумчанин
Регистрация: 16.02.2007
Сообщений: 269
|
![]() Цитата:
на крайняк клиентская прога может отследить жив ли процесс. GetExitCodeProcess(hProcess, ExitCode); если ExitCode = STILL_ACTIVE тогда процесс еще не завершен. hProcess-хендл процесса а вот пример как запустить экзешник и ожидать его завершения Код:
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
|
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
![]()
MadReason, скока я понимаю ваш вариант остановит выполнение программы до тех пор пока не завершится дочерниц процесс. В контесте моей задачи придеться передавать пуск дочерних процессов на отдельные нити, что бы не застопорить саму программу, я правильно понимаю?
Помог? Ну так нажми на весы!
![]() |
![]() |
![]() |
![]() |
#8 |
Ищу работу
Форумчанин
Регистрация: 16.02.2007
Сообщений: 269
|
![]()
правильно. извиняюсь что долго без ответа)
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 28.09.2008
Сообщений: 344
|
![]() Цитата:
Насколько знаю самые мощные компьютеры работают на основе кластерных технологий. Если SNUPY напишет хорошую систему, то ей вполне можно найти применение: - если в учебном заведении есть компьютерная сеть, то факультет физики ( химии ... ) может воспользоваться разработанной и проверенной преподавателями системой для своих вычислений - каждый из учащихся и преподавателей сможет тоже подсоединиться через интернет к этим вычислениям через интернет ( только надо будет для этого проработать какую-нибудь защиту ). - любая группа единомышленников может решать распределенные задачи. Главное пользоваться надежной системой из надежных источников, а не брать что попало на первом же сайте. Теперь по существу: Как я понимаю, на одном компьютере находится сервер. Его задачи: - хранить задания на вычисления ( которые состоят из алгоритма вычисления и исходных данных ). - распределять задания клиентам и при необходимости выдавать для них новые исходные данные. - получать и объединять результаты вычислений. - вести, отображать и выдавать по требованию текущее состояние вычислений и статистику. Клиенты находятся на других компьютерах, объединенных в сеть: - позволяют настраивать процесс вычислений, возможно с применением планировщика. ( задание количества одновременно решаемых задач, нагрузка на процессор ( приоритеты нитей ), нем меньше, чтоб не мешало... ) - отображают текущее состояние и статистику - соединяются с сервером и получают вычислительные модули ( в виде exe или dll ) - запускают вычисления, передают им исходные данные и получают результаты - получают от сервера необходимые исходные данные и передают результаты. Что упустил - добавите. Реализовывать можно постепенно. Почему модули вычислений и исходные данные: Например, решается задача нахождения всех простых чисел. Создается функция проверяющая числа в заданном диапазоне и выдающая найденные простые числа. Клиент получает эту функцию, получает первый диапазон ( 10^6 - 2*10^6 ) обрабатывает этой функцией, передает результаты иполучает следующий диапазон. Преимущества использования dll ( мое мнение ): По системе плагинов можно динамически подключить, запустить в отдельной нити и предоставить общий интерфейс взаимодействия с сервером - при этом в самой dll не надо дублировать общие для всех методы, а останется только сами вычисления, что уменьшит размер. Ожидание процесса с обработкой сообщений: Код:
Код:
Код:
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Delphi. Создание нового класса, его "предков". | Krechet | Помощь студентам | 0 | 26.04.2009 15:52 |
Динамическое создание "суб-меню" из файлов в заданном каталоге | Abhorrer | Общие вопросы Delphi | 5 | 14.03.2009 21:47 |
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body | tabikA | HTML и CSS | 5 | 24.02.2009 21:50 |
Программа, выполняет дочерний процесс | IgorArhangel | Помощь студентам | 3 | 24.01.2009 23:12 |