![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про многопоточность [D5]
Yuraz © (2002-05-27 19:48:00)Пишу программы без неё самой, но вот дописал, и хотелось бы сделать вычисления прозрачными, т.е. фоновыми, которые иногда достигают 5 и более секунд. (Без неё, эти 5 сек. прога не прорисовывает форму и т.п.) Хотелось бы узнать, когда пишешь программу, МП надо всегда в голове держать, и сразу начинать что то делать с ней, потом от этого "плясать" в сторону что надо программе, постепенно дорабатывая интерфейс, добавляя функции?
Или сначала пишешь просто (без МП), заканчиваешь, оформляешь, пытаешься добавить многопоточность (с чем я сейчас и столкнулся). И в результате что то не получается, очень много делаю обращений к визуальным компанентам(в основном tMemo, tEdit..., PS, не с графикой), что в МП надо синхронизировать, что очень сложно.
Может кто объяснит основные правила построений МП приложений? Что первое, что второе в разработке программы? Если что не ясно в моём вопросе, завтра попытаюсь конкретизировать, заранее всем спасибо.
NailS (2002-05-28 12:34:00) [1]При проектировании приложения не "от кнопочек" распараллеливание кода можно провести довольно безболезнено.
Много чего интересного можно подчерпнуть отсюда
http://www.tomsk.net/2q/gurin/gala.html
eSKey (2002-05-27 20:39:00) [2]Таймер я предложил для того, если ты хочешь в основном потоке отображать некий прогресс вычислений. А иначе просто вешаешь на thread.onterminate метод, который твои результаты выведет на форму и все - форма не будет "подвисать", а через "5 секунд" на ней будут результаты.
Что касается когда добавлять МП - лучше конечно сразу задумывать, но если все по процедурам раскидано нормально, то многопоточность можно именно добавить, вызывая нужные процедуры в новой нити (ну и правила те же, насчет компонент).
Yuraz (2002-05-27 20:18:00) [3]Про математику ясно, тогда далее выяснить, с чего начинать разрабатывать, с МП+добавления или с простого, но законченного приложения с последующем добавлении МП?
С таймером это иммитация МП?
eSKey (2002-05-27 20:03:00) [4]вычисления (математику) выносить в отдельный поток безопасно. Обращение к визуальным компонентам надо делать в контексте основного потока - либо через synchronize, либо например заводишь на форме таймер и в основном потоке каждые № миллисекунд читаешь данные и обновляешь форму. Тогда еще нужен флаг на предмет того, что данные сейчас можно считывать.