![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
![]() Цитата:
Статистика показывает, что, к сожалению, поиском пользуется 0.(0)1% людей, просто предпочитают сразу задавать вопрос. Собственно, по теме. Я бы строил примерно так. Если задача стоит как список заданий вида: [на этот сервер][закачать][эту папку/файл] то делаем пул потоков-работников, каждый из которых обрабатывает одно задание. Когда поток выполняет задание, он спрашивает (беред из очереди) следующее. Тут тебе потребуются критические секции (CriticalSection). Общее кол-во потоков тоже ограничивается каким-то разумным числом (5-10). Ну и соответсвенно поток-координатор (м.б. главный поток приложения) просто обеспечивает очередь заданий для выполнения и следит когда вся работа закончится. |
#17
|
|||
|
|||
![]() Цитата:
![]() ![]() |
#18
|
||||
|
||||
![]() Offtop:
No comments ![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#19
|
|||
|
|||
![]() Цитата:
Цитата:
Скачал видео и исходник, сейчас буду разбирать и запилю в свой проект. |
#20
|
|||
|
|||
![]() Хелп! Почему выскакивает ошибка Project.Project2.exe raised exception class EAccessViolation with message 'Access violation at address 00427DA0 in module 'Project2.exe'. Read of address 0000000000'. Process stoped. Use Step or Run to continue. при нажатии на батон.
PHP код:
Когда убираю work, то ошибки нет, а с ним выскакивает. Почему так? Последний раз редактировалось ujanin, 10.09.2011 в 15:12. |
#21
|
||||
|
||||
![]() Силён. Что это строка по твоему делает?
Код:
TNewThread.Create(false); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#22
|
||||
|
||||
![]() вот рабочий пример с Work:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TNewThread = class(TThread) protected procedure Execute; override; end; TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TNewThread } procedure TNewThread.Execute; begin Sleep(0); end; procedure TForm1.Button1Click(Sender: TObject); var Thread: Integer; Work: Boolean; begin Work:=True; for Thread:=1 to StrToInt(Edit1.Text) do TNewThread.Create(False); if Work then PostMessage(Handle, WM_CLOSE, 0, 0); end; end. http://data.cod.ru/123478 Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 11.09.2011 в 08:53. |
#23
|
|||
|
|||
![]() Цитата:
Последний раз редактировалось ujanin, 12.09.2011 в 08:50. |
#24
|
|||
|
|||
![]() Цитата:
Спасибо друг! ![]() |