Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 20:39   #1
Dеlphi
нажмите + на весах
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 30
Вопрос синхронизация потоков. циклы

как синхронизировать потоки в многопоточном приложение, они содержат 3 вложенных цыкла:
Код:
  while ((not Terminated) and (iiil^<logs.Count)) do
  begin
  while (not Terminated) and (iiip^<pass.Count) do
  begin
  while (not Terminated) and (iiiu^<urls.Count) do
  begin
inc(iiiu^);
// КОД
  end;
      inc(iiip^);
  end;
     inc(iiil^);
  end;
нужно чтобы код выполняющийся в цикле, равномерно поделился между всеми потоками.
я синхронизировал с использованием критических секций так:

Код:
 synx.Enter;
  while ((not Terminated) and (iiil^<logs.Count)) do
  begin
  iiip^:=0;
  while (not Terminated) and (iiip^<pass.Count) do
  begin
  iiiu^:=0;
  while (not Terminated) and (iiiu^<urls.Count) do
  begin
   inc(iiiu^);
  synx.Leave;
//КОД
  synx.Enter;
  end;
      inc(iiip^);
  end;
     inc(iiil^);
  end;
  synx.Leave;
но при нескольких потоков в цикле код выполняется больше чем нужно раз.
как правильно синхронизировать такой алгоритм?
Если помог нажми на весы

Последний раз редактировалось Dеlphi; 14.10.2011 в 21:47.
Dеlphi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация потоков добрый_фей Помощь студентам 5 09.12.2011 19:57
Синхронизация потоков alenka_ej Помощь студентам 0 03.06.2010 22:20
Синхронизация потоков в С++ erazer89 Помощь студентам 0 27.04.2010 20:14
синхронизация потоков m_kostik Win Api 0 26.03.2010 23:56