Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизОшибка в выполнении параллельного потока Найти похожие ветки
← →
ГореПрограммер (2006-11-07 15:11) [40]
> for i := 0 to ar_excel.count - 1 do
> begin
> if Terminated then
> Break;
> index:=i;
> Synchronize(sinform);
> end;
Да вроде по этому коду он должен выполнится ar_excel.count число раз. а не бесконечно
← →
Сергей М. © (2006-11-07 15:13) [41]
> Synchronize(sinform);
Закомментарь эту строчку - получишь желаемое.
← →
Сергей М. © (2006-11-07 15:17) [42]А если не получишь, то рассказывай подробно, что такое ar_excel, откуда он взялся ..
← →
Anatoly Podgoretsky © (2006-11-07 15:25) [43]> ГореПрограммер (07.11.2006 15:11:40) [40]
Так оно и есть и у меня есть подобные потоки, как написано так и работает - ar_excel.count число раз.
Убери Synchronize
← →
ГореПрограммер (2006-11-07 16:02) [44]
> Так оно и есть и у меня есть подобные потоки, как написано
> так и работает - ar_excel.count число раз.
> Убери Synchronize
>
а как тогда выполнять
> loadip(ar_excel.zaps[index].mac,index);
> getminup(ar_excel.zaps[index].id);
?
← →
Сергей М. © (2006-11-07 16:05) [45]
> ГореПрограммер (07.11.06 16:02) [44]
> а как тогда выполнять
Каком кверху.
Это намек на то, что в одной из этих п/программ у тебя ошибка.
← →
MetalFan © (2006-11-07 16:30) [46]класс ребята! групповая удаленная отладка))))
← →
Anatoly Podgoretsky © (2006-11-07 16:53) [47]> ГореПрограммер (07.11.2006 16:02:44) [44]
Ты убрал? Проблема исчезла или нет?
← →
Anatoly Podgoretsky © (2006-11-07 16:53) [48]> MetalFan (07.11.2006 16:30:46) [46]
Промывание мозгов через одно место
← →
ГореПрограммер (2006-11-07 16:54) [49]
>
> Ты убрал? Проблема исчезла или нет?
да, сейчас пытаюсь понять каким образом SQL запрос может такое вызвать такие последствия...
← →
Сергей М. © (2006-11-07 16:57) [50]сейчас выяснится, что автор слыхом не слыхивал ни про потоконебезопасность объектов доступа к СУБД, ни про Co[Un]Initialize ..
горе-прграммер. одним словом)..
← →
Percent (2006-11-07 16:58) [51]for i := 0 to ar_excel.count - 1 do
begin
if Terminated then
Break;
index:=i;
Synchronize(sinform);
end;
Прикольный "поток"... Чему равно ar_excel.count?
← →
ГореПрограммер (2006-11-07 17:01) [52]
> Прикольный "поток"... Чему равно ar_excel.count?
числу
← →
Сергей М. © (2006-11-07 17:03) [53]
> ГореПрограммер (07.11.06 17:01) [52]
> числу
Да неужели ?!) ... Вот это новость ))
← →
ГореПрограммер (2006-11-07 17:04) [54]
> Да неужели ?!) ... Вот это новость ))
каков вопрос, таков ответ )
← →
Сергей М. © (2006-11-07 17:09) [55]
> ГореПрограммер (07.11.06 17:04) [54]
Ну-ну.
ПРодолжай умничать.
Проблема-то - у тебя, а не у нас.
← →
ГореПрограммер (2006-11-07 17:13) [56]
> Ну-ну.
> ПРодолжай умничать.
>
> Проблема-то - у тебя, а не у нас.
Умничать ? да нет, вроде даже не пытался
> ГореПрограммер (07.11.06 16:54) [49]
>
>
> >
> > Ты убрал? Проблема исчезла или нет?
>
> да, сейчас пытаюсь понять каким образом SQL запрос может
> такое вызвать такие последствия...
← →
MetalFan © (2006-11-07 17:41) [57]
> Сергей М. © (07.11.06 16:57) [50]
>
> сейчас выяснится, что автор слыхом не слыхивал ни про потоконебезопасность
> объектов доступа к СУБД, ни про Co[Un]Initialize ..
>
> горе-прграммер. одним словом)..
это и так уже понятно
← →
ANB © (2006-11-07 18:28) [58]Таки глупый вопрос - а нафига тут вообще поток ? Чтобы был ?
← →
MetalFan © (2006-11-07 18:39) [59]>[58]
я тож так сказал в [7] ;)
← →
ГореПрограммер (2006-11-08 09:33) [60]Смысл в том, чтобы после запуска программы в фоне из базы загружались дополнительные данные, не мешая при этом работе программы.
← →
Сергей М. © (2006-11-08 09:57) [61]
> ГореПрограммер (08.11.06 09:33) [60]
> Умничать ? да нет, вроде даже не пытался
Знач мне показалось) ... Я-то, дурак, думал, что конкретное значение твоих данных типа integer могут быть равными попугаям, авоськам, да всему чему угодно ... А тут вон оно как дело-то певернулось - "числу", оказывается ..)
Мда ..
Ну так ты оттрассировал пошагово проблемный код ?
← →
ГореПрограммер (2006-11-08 10:13) [62]
> Ну так ты оттрассировал пошагово проблемный код ?
В том- то и дело, что да. Ни в одной из тех двух процедур зацикленности не получается. Проверял даже проще: без потока исполнял цикл с этими процедурами, выполнился он корректно.
← →
ГореПрограммер (2006-11-08 10:16) [63]Еще вопрос: а поток должен быть обязательно вынесен в отдельный модуль или это не влияет ?
← →
Anatoly Podgoretsky © (2006-11-08 10:19) [64]
> Смысл в том, чтобы после запуска программы в фоне из базы
> загружались дополнительные данные, не мешая при этом работе
> программы.
Смысл хороший, а реализация.
И случайно не АДО ли ты используешь?
← →
ГореПрограммер (2006-11-08 10:23) [65]
> И случайно не АДО ли ты используешь?
DbExpress
← →
DVM © (2006-11-08 10:31) [66]
> а поток должен быть обязательно вынесен в отдельный модуль
> или это не влияет ?
Не влияет, но когда в одном модуле область видимости другая несколько. Дружественные классы так сказать образуются.
← →
Anatoly Podgoretsky © (2006-11-08 10:58) [67]> DbExpress
А он случайно не использует асинхронные запросы
← →
Сергей М. © (2006-11-08 11:01) [68]
> ГореПрограммер (08.11.06 10:13) [62]
Тогда рассказывай, с какой луны у тебя свалился ar_excel ..
← →
ГореПрограммер (2006-11-08 11:03) [69]ar_excel это массив данных типа record
Данные загружаются при запуске программы после запуска мне необходимо для уже загруженных данных подгрузить несколько полей из базы данных.
← →
Сергей М. © (2006-11-08 11:06) [70]
> ar_excel это массив данных типа record
И откуда у массива (!) взялось нечто выглядящее как count ?
Давай уже показывай декларацию ...
← →
ГореПрограммер (2006-11-08 11:17) [71]
> Сергей М. © (08.11.06 11:06) [70]
Массив динамический. вместо count можно, безусловно, и использовать length, но было изначально сделано так. Count это просто колличество записей в массиве.
rzap_excel=record
id:string;
sat:string;
stat:string;
mac:string;
.....
....
....
end;
azap_excel=record
count:integer;
zaps:array of rzap_excel;
end;
var
ar_excel:azap_excel;
← →
Anatoly Podgoretsky © (2006-11-08 12:20) [72]> DVM (08.11.2006 10:31:06) [66]
Какая же другая, когда это находится в секции public глобальнее уровня нет.
← →
Anatoly Podgoretsky © (2006-11-08 12:22) [73]> ГореПрограммер (08.11.2006 11:17:11) [71]
И доступ к azap_excel наверно возможен из разных потоков
← →
DVM © (2006-11-08 12:31) [74]
> Какая же другая, когда это находится в секции public
если public тогда без разницы конечно
← →
Сергей М. © (2006-11-08 12:48) [75]
> Count это просто колличество записей в массиве
Вот так и говори : count - это поле некоей записи)
Что скажешь насчет [73] ?
← →
ГореПрограммер (2006-11-08 12:56) [76]
> И доступ к azap_excel наверно возможен из разных потоков
Да, возможен. но изменений внутри этой переменной не происходит, изменения вносятся в момент выполнения паралельного потока только им.
← →
Сергей М. © (2006-11-08 13:03) [77]
> изменений внутри этой переменной не происходит
Это все на словах.
А теперь подтверди это реальным кодом ..
← →
Anatoly Podgoretsky © (2006-11-08 13:18) [78]> Сергей М. (08.11.2006 13:03:17) [77]
Зачем на словах, у него же явно много потоков запускается, ведь именно на это и жалуется.
← →
ГореПрограммер (2006-11-08 13:21) [79]
> Зачем на словах, у него же явно много потоков запускается,
> ведь именно на это и жалуется.
Нет, есть основной поток, в котором работает вся программа и один единственный параллельный, который как раз подгружает эти данные
← →
ANB © (2006-11-08 13:30) [80]
> ГореПрограммер (08.11.06 13:21) [79]
1. ИМХО ты доп.поток умудряешься 2 раза запустистить. покажи код запуска потока.
2. Пока доп поток работает - чего главный делать то должен ? Если он без данных, загруженных доп.потоком работать не может - то лучше глянуть в сторону асинхронки, понадежнее будет.
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.044 c