Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Процессы и потоки... 
:(
    Опции темы
JJohn
Дата 19.10.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



Ребята... Есть такая проблемка...

На тему процессов и потоков (ф-ции CreateProcess , CreateThread, и т.д.)
Конкретней - написать программку, в консоле, которая выводит сортировку массива случай. чисел с отображением хода (програсса) в процентах, и чтобы можно было отменить слишком долгую операцию...
Есть конечно еще пару вопросов, но пока меня это интересует...
"Собрал" стандартный пузырьковой алгоритм сортировки... Разобрал ф-ции CreateProcess и CreateThread(вроде понятны все параметры и т..д.), только вот никак не пойму, как все это использовать в конкретной задаче? Посоветуйте хотя бы, с чего начать?
PM MAIL   Вверх
Romikgy
Дата 20.10.2005, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



ИМХО те хватит одного треда,
Цитата(JJohn @ 19.10.2005, 22:16)
CreateThread

При вызове этой ф-ции , в параметрах указываешь собстно ф-цию потока и в ней делашь почти что хошь smile Только с процентами думаю намаешься, а поток дистанционно можно приостановить или запустить или убить smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_hunter
Дата 20.10.2005, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



при чем тут процесс -- не понял. если стоит такой вопрос -- зачем тебе CreatеThread?
береш TThread, в Execute пишеш свой алгоритм. после одного пробегания массива ( или еще когда-нить ) выводиш прогресс. паралельно ( не в этом потоке читаеш с консоли и если нужно тормозится -- вызываеш Terminate() потока ( не забывая в нем этот флаг контролировать ) )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
JJohn
Дата 28.10.2005, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.9.2005

Репутация: нет
Всего: нет



итак, что нужно точно сделать, стало более менее ясно... а то раньше сам не совсем понимал, что мне нужно.........
1) что нужно сделать первым, так это создать exe`шник, являющейся консольной программой.
этот модуль должен производить сортировку большого массива(пользуемся "пузырьком", так как самый медленный способ). Массив выделяться должен динамически(для того чтобы в командной строке можно было передавать его размер)
еще указано, что в режиме "по умолчанию" - производится вывод на экран, то есть режим пользователя, а в режиме "silent mode" не производится вывод на экран.
Это обязательное условие того, что нужно сделать...
Вот что удалось понять......
Здесь должен создаваться поток(CreateThread), который и будет выполнять сортировку..,
а в интерфейсной части что-то типа этого:
//interface
while(1) {
...
res=WaitForSingleObject(hSort,0);
...
if (res==WAIT_OBJECT_0)
{
...//exit Program
}

} //while

Так вот я не пойму, как именно правильно организовать поток с функцией сортировки.
и еще не совсем понятно, как можно с помощью выше приведенного куска кода организовать то, чтобы можно было прервать нажатием клавиши например, длительную операцию(если допустим мы ввели слишком большой размер массива)
Сама сортировка производится, но без потока.....:
Нечто типа:
for n:=0 to 999 do
for i:=0 to 999 do
if Massiv[i]>Massiv[i+1] then begin
buf:=Massiv[i+1];
Massiv[i+1]:=Massiv[i];
Massiv[i]:=buf;
end;
программе в консоле передается параметр размера. Это создано специально для организации второго консолного exe`шника, который будет использовать первый, и с помощью которого мы будем измерять время сортировки в зависимости от размера массива....но пока мне нужно понять как сделать первый модуль...
PM MAIL   Вверх
Самурай
Дата 28.10.2005, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 20.10.2005
Где: Воронежская облас ть > Семилуки

Репутация: 1
Всего: 1



А для чего мучаться? Вроде есть формулы, которые отражают "время" сортировки. Оно естественно не может полностью отразить ральный ход вещей, но для процентов очень сгодится. При этом не нужно ничего более, кроме одного приложения с циклом-сортировкой...
Добавлено @ 21:21
А почему использовать нужно именно консоль? В форме более приятно глазам будет отображение. Кстати, в этом случае для лучшего выполнения программы как раз потребуется стандартный поток TThread (или как там пишется).
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.