Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Про потоки


Автор: bagos 12.12.2010, 20:41
Господа знающие, подскажите, как грамотней писать потоки? стоит ли использовать имеющийся в дельфях класс, или использовать винапи? какие плюсы минусы?

Автор: kami 12.12.2010, 20:45
Цитата(bagos @  12.12.2010,  20:41 Найти цитируемый пост)
как грамотней писать потоки?

грамотность написания потоков зависит не от выбранного метода реализации, а от радиуса кривизны рук программиста. И дальше пойдут только имхо, основанные на личных предпочтениях.
Мне, например, проще и удобнее с TThread.

Автор: bagos 12.12.2010, 22:08
Дабы не создавать еще одну тему напишу тут, что мне требуется сделать.
В течении года делал для начальника небольшие простенькие программки. По логике и интерфейсу все программы очень просты и не емки.
На форме может на ходится пару тройку эдитов, мемо и пару лейблов, пару кнопок. Задаются параметры в эдиты в мемо выводится результаты, где то нет эдитов а есть другие компоненты управления и ввода, не суть. Вообщем таких программок около 100, начальник хочет чтобы я сделал теперь отдельную программу, только чтобы эти программы подключались отдельно. Вообщем переводя на наш язык хочет поддержку подключаемых модулей в одной программе. Да так чтобы эти модули открывались в отдельном окне, но при этом не хочет чтобы каждая программа была отдельным исполняемым файлов.
Некоторые программы делают долгие временные рассчеты, от 2 мин до часу. По программа не спрашивайте там сам черт не разберет что к чему. Меня интересует ваше мнение по-поводу создания подобной системы. Начну вопросы по порядку:
1. Вопрос как и где содержать формы в подключаемых модулях, какие сущ. решения, варианты?
2. Должны ли подключаемые модули(формы), открываться в отдельном потоке?
3. Некоторые программки должны будут брать параметры и/или использовать функцию которая находится в главной программе и также посылать ей некоторые данные.
С уважением, bagos

Автор: bems 12.12.2010, 22:29
Формы в потоки не выноси, нормально работать это не будет

Автор: bagos 12.12.2010, 23:01
Поиски в интернете дали что формы в длл держать не правильно и работать это будет не айс, от использования bpl также отказываюсь. Какие будут идеи?

Автор: aleksh 12.12.2010, 23:36
Цитата(bagos @  12.12.2010,  22:01 Найти цитируемый пост)
 Какие будут идеи

юзать фреймы

Автор: bagos 12.12.2010, 23:47
Что за фреймы, будьте добры поподробней.

Автор: pseud 13.12.2010, 10:35
Цитата(bagos @  12.12.2010,  22:08 Найти цитируемый пост)
чтобы эти программы подключались отдельно

читай про плагины (dll)
Цитата(bagos @  12.12.2010,  23:01 Найти цитируемый пост)
формы в длл держать не правильно и работать это будет не айс,

очень даже айс

Автор: Poseidon 13.12.2010, 17:32
Цитата(bagos @  12.12.2010,  20:41 Найти цитируемый пост)
стоит ли использовать имеющийся в дельфях класс
Я бы сказал так, имеющийся класс использовать нужно. http://forum.vingrad.ru/forum/topic-60076/hl/tthread/index.html.

Автор: _Dimon_ 13.12.2010, 18:32
Цитата(Poseidon @  13.12.2010,  17:32 Найти цитируемый пост)
Я бы сказал так, имеющийся класс использовать нужно. Вот, почитай.

Спасибо Poseidon, очень полезная ссылочка

Автор: imageman 13.12.2010, 22:40
 для обмена информацией между модулями я обычно использую отдельный юнит под названием GlobalVars (ну или GlobalUnit) - этот .pas файл упоминаешь в uses в каждом модуле-форме и можно использовать общие переменные. Только для dll это ведь не будет работать?

Может для dll можно сделать отдельную GlobalVars.dll?

Автор: cat512 14.12.2010, 01:28
Цитата(bagos @ 12.12.2010,  23:01)
Поиски в интернете дали что формы в длл держать не правильно и работать это будет не айс, от использования bpl также отказываюсь. Какие будут идеи?

Хотелось бы услышать аргументы против bpl.

Автор: bems 14.12.2010, 03:22
Цитата(imageman @  13.12.2010,  22:40 Найти цитируемый пост)
для обмена информацией между модулями я обычно использую отдельный юнит под названием GlobalVars (ну или GlobalUnit) - этот .pas файл упоминаешь в uses в каждом модуле-форме и можно использовать общие переменные. 
Это ужасно

Автор: Poseidon 14.12.2010, 17:53
bems, это наверно новое слово в программировании. Что мы с тобой, два старпера, понимаем в современном кодинге?  smile 

Автор: bems 14.12.2010, 18:59
Poseidon, вообще для полного труъ это должен быть inc-файл

Автор: imageman 14.12.2010, 22:19
Цитата(bems @ 14.12.2010,  02:22)
 
Цитата(imageman @  13.12.2010,  22:40 Найти цитируемый пост)
для обмена информацией между модулями я обычно использую отдельный юнит 
Это ужасно

 а поподробнее?

Как это делаете вы?

Как удобнее сделать обмен информацией между разными unit внутри одной программы?
Как удобнее сделать обмен информацией между разными dll?
Как удобнее сделать обмен информацией между разными exe?
Как удобнее сделать обмен информацией между разными машинами в пределах локальной сети?
Как удобнее сделать обмен информацией между разными машинами через интернет?

Автор: kami 14.12.2010, 23:28
Цитата(imageman @  14.12.2010,  22:19 Найти цитируемый пост)
Как удобнее сделать обмен 

Метод, который применим в конкретном случае определяется исходя из конкретной задачи/архитектуры приложения.
http://msdn.microsoft.com/en-us/library/aa365574(v=vs.85).aspx
Универсального метода не может быть, с некоторыми ограничениями на него могут претендовать (имхо) только сокеты. Но во многих случаях их применение избыточно.

Автор: bems 15.12.2010, 05:20
Цитата(imageman @  14.12.2010,  22:19 Найти цитируемый пост)
Как удобнее сделать обмен информацией между разными unit внутри одной программы?
Использовать интерфейсные секции юнитов. интерфейс продумывать. Глобальных переменных не делать.

Цитата(imageman @  14.12.2010,  22:19 Найти цитируемый пост)
Как удобнее сделать обмен информацией между разными dll?
Использовать секции экспорта. Интерфейс продумывать. Включать в обе длл одни и те же юниты можно, но всё так же избегать глобальных состояний. Разумеется у разных копий юнита в разных длл будут разные копии данных юнита

Цитата(imageman @  14.12.2010,  22:19 Найти цитируемый пост)
Как удобнее сделать обмен информацией между разными exe?
MMF, пайпы, сокеты

Цитата(imageman @  14.12.2010,  22:19 Найти цитируемый пост)
Как удобнее сделать обмен информацией между разными машинами в пределах локальной сети?
пайпы, сокеты, MMF для расшаренного файла (сомнительно, но допустимо)

Цитата(imageman @  14.12.2010,  22:19 Найти цитируемый пост)
Как удобнее сделать обмен информацией между разными машинами через интернет? 
сокеты, веб

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)