|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.01.2012, 21:37 | #11 |
Пользователь
Регистрация: 24.02.2011
Сообщений: 16
|
Обновил предыдущий пост. Теперь есть. Не вру, но не критичен этот код
Последний раз редактировалось nikol_; 25.01.2012 в 21:41. |
25.01.2012, 21:49 | #12 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Зато теперь, когда вы код привели, в последнем коде я вижу отсутствие синхронизации при доступе к pool, itemsInWork и, возможно, isWork (я не знаю точно, потому что код вы опять не привели). Мой выстрел наугад: из-за отсутствия синхронизации поток ловит Access Violation и самоэкстерминируется.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
26.01.2012, 01:51 | #13 | |||
Пользователь
Регистрация: 24.02.2011
Сообщений: 16
|
Цитата:
Цитата:
isWork - признак "запущенности" потока на обработку, объявлен в TNewThread. Потоки TLifeOfItem и поток TNewThread не меняют значения isWork, оно меняет значение только в одном месте, когда "пользователь нажмет СТОП" itemsInWork - список id объявлений,объявлен в TLifeOfItem. Когда поток TNewThread запостил объявление и вырезал id, он пихает это id в itemsInWork. Потоки TLifeOfItem имеют доступ к itemsInWork но только через Synchronize - где поток перед тем как умирать вызывает метод удаления ID из работающих потоков. Но это удаление вызывается только через Synchronize. (но этот код в текущем примере нигде не вызывается, т.е. проблема тоже не в нем) Цитата:
Чтобы вы могли назвать меня вруном, могли попрактиковаться остроумии и тп. и тд. Спасибо большое. |
|||
26.01.2012, 09:34 | #14 | |||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
Вам пора узнать об TList,TObjectList,TCollection и т.д. Цитата:
Цитата:
Последний раз редактировалось Человек_Борща; 26.01.2012 в 09:38. |
|||
26.01.2012, 11:34 | #15 | |
Пользователь
Регистрация: 24.02.2011
Сообщений: 16
|
Человек_Борща, заменил код:
Код:
Код:
Цитата:
|
|
26.01.2012, 11:46 | #16 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
вы поражаете гениальностью..
Код:
Код:
Код:
[UPD] Поправил косяки.. Count возвращает количесво элементов включая 0 [0..4] = 5, а обращение к 5-ому элементу станет ERangeError т.к. 5-го элемента нет. Последний раз редактировалось Человек_Борща; 26.01.2012 в 12:07. |
26.01.2012, 11:54 | #17 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Человек_Борща с каких пор индекс последнего элемента совпадает с количеством элементов? К-во = 5, индекс от 0 до 4. Ваш пример сразу вывалит ошибку, поскольку выход за пределы. Кто поражает гениальностью ещё вопрос
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
26.01.2012, 12:02 | #18 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
Count - вернёт кол-во элементов включая 0-ль. На момент добовления нового элемента, последний элемент будет = Count. Или логика не верна? Или Tlist стал на столько не логичным? или я опять бревно с домом попутал? [upd] Просёк фишку=) Опять бревно с домом спутал Последний раз редактировалось Человек_Борща; 26.01.2012 в 12:08. |
|
26.01.2012, 12:07 | #19 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Первый элемент - 0,
последний - Count-1 всего элементов - Count Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.01.2012 в 12:11. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание потоков | cargo29 | Общие вопросы Delphi | 16 | 07.08.2011 12:11 |
Приоритеты потоков | Soundkilla | Помощь студентам | 1 | 24.04.2011 19:37 |
Синхронизация потоков в С++ | erazer89 | Помощь студентам | 0 | 27.04.2010 20:14 |
Остановка потоков по ID | steelforce | Общие вопросы Delphi | 2 | 24.01.2010 16:50 |