![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хочу подгружать dll-ки так, чтобы выполняли параллельную работу [D6]
Alex_LG2 © (2002-05-21 14:48:00)Суть в том, что программа должна выполнять несколько отдельных процедур одновременно, так, чтобы они не мешали одна другой. Тут всё ясно, скажете вы: создавай потоки. Так. Но ради экономии памяти (эти процедуры выполняются не всё время) они (процедуры) распределены у меня по длл-кам. Так вот КАК лучше сделать: в программе создавать отдельные потоки и в них загружать(динамически)эти длл, или потоки создавать в самих длл? Или же просто создавать формы в этих длл, и эти формы сами собой :) будут работать уже в разных потоках? Возможно, вопрос и простой на самом деле, но я уже здесь совсем запутался.
И ещё: что, если вот такая длл вызывает в свою очередь следующую подобным же образом? (хотя это уже вторичный вопрос)
Fellomena (2002-05-21 16:31:00) [1]Если процедуры, которые находятся в dll используются программой часто, то лучше подключить dll статически, тогда ты избавишься от ненужных накладных расходов на загрузку и освобождение dll каждый раз, когда необходимо выполнить ту или иную ф-ию или процедуру из этой dll.
А сами эти процедуры уже выполняй в различных потоках.
Imho, это оптимальное решение в данной ситуации.
Digitman (2002-05-21 15:30:00) [2]При чем здесь формы ?
Ты же речь ведешь об организации параллельных вычислений, а не о визуализации их параметров/результатов (для чего, собственно, в первую очередь и предназначены формы) !
Разницы нет абсолютно никакой. Делай так, как тебе удобней и проще/наглядней с т.з. модульной организации проекта и с т.з. упрощения отладки.
Здесь гораздо важней понимать вот что. Если создание самого первого экземпляра некоего потока (объекта-наследника класса TThread) будет происходить в некоей экпортируемой DLL-ф-ции, и эта самая DLL-ф-ция, в свою очередь, будет вызвана из доп.потока вызывающего хост-процесса, то метод Synchronize() в ряде случаев не позволит обеспечить безопасную работу с виз.объектами VCL.