![]() |
[Delphi] Многопоточность.
Я знаю. Всех эта тема уже ацки задрала. Но прошу вас о помощи. Гугл и тд не предлагать.. просто помогите. Значит суть такова: например у меня в списке 100 проксей, я хочу проверить весь список скажем в 7 потоков. Желательно, что бы все это дело можно было поставить на паузу, возобновить и прервать вовсе. Я немного разобрался с критическими секциями. Но все это сопоставить немогу. Парни! прошу вас о помощи.. Если вам помощь нужна - я помогу и помогал всегда.. Модераторы - простите засранца за темень в знаниях моих...
|
пишу код на коленке, думаю разберёшся сам :)
Код:
p = class(tthread) |
Цитата:
|
Всё очень просто :
Разберем что есть 100 прокси и 7 потоков. Каждый поток должен что делать : Брать новый прокси и чекать его, если чекать уже не кого(счётчик равен 100) - поток убиваем. Когда поток убиваем проверяем, последний ли поток убили, если да - то программу информиреум о том что чек закончился. Теперь разберем куда всунуть критическую секцию. Во-первых первая критическая секция должна стоять там где берется новый прокси, во-вторых вторая должна стоять где идёт проверка послдений ли поток был убит, получаем вот такой общий код процедуры выполнения потока : Код:
procedure TProxyThread.Execute;pxIndex := 0; ermThreads := 0; Что бы на время приостановить чек - выполняем из главного потока : cs1.Exiter; (1) Что бы продолжить чек - выполняем из главного потока : cs1.Leave; (2) Ток следи что бы (1) и (2) выполнялись симметрично. |
Цитата:
Interlocked-функции WinAPI |
Цитата:
|
| Время: 15:53 |