![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 24.02.2011
Сообщений: 16
|
![]()
Обновил предыдущий пост. Теперь есть. Не вру, но не критичен этот код
Последний раз редактировалось nikol_; 25.01.2012 в 21:41. |
![]() |
![]() |
![]() |
#12 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Зато теперь, когда вы код привели, в последнем коде я вижу отсутствие синхронизации при доступе к pool, itemsInWork и, возможно, isWork (я не знаю точно, потому что код вы опять не привели). Мой выстрел наугад: из-за отсутствия синхронизации поток ловит Access Violation и самоэкстерминируется.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
#13 | |||
Пользователь
Регистрация: 24.02.2011
Сообщений: 16
|
![]() Цитата:
Цитата:
isWork - признак "запущенности" потока на обработку, объявлен в TNewThread. Потоки TLifeOfItem и поток TNewThread не меняют значения isWork, оно меняет значение только в одном месте, когда "пользователь нажмет СТОП" itemsInWork - список id объявлений,объявлен в TLifeOfItem. Когда поток TNewThread запостил объявление и вырезал id, он пихает это id в itemsInWork. Потоки TLifeOfItem имеют доступ к itemsInWork но только через Synchronize - где поток перед тем как умирать вызывает метод удаления ID из работающих потоков. Но это удаление вызывается только через Synchronize. (но этот код в текущем примере нигде не вызывается, т.е. проблема тоже не в нем) Цитата:
Чтобы вы могли назвать меня вруном, могли попрактиковаться остроумии и тп. и тд. Спасибо большое. |
|||
![]() |
![]() |
![]() |
#14 | |||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Вам пора узнать об TList,TObjectList,TCollection и т.д. Цитата:
Цитата:
Последний раз редактировалось Человек_Борща; 26.01.2012 в 09:38. |
|||
![]() |
![]() |
![]() |
#15 | |
Пользователь
Регистрация: 24.02.2011
Сообщений: 16
|
![]()
Человек_Борща, заменил код:
Код:
Код:
Цитата:
|
|
![]() |
![]() |
![]() |
#16 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
вы поражаете гениальностью..
Код:
Код:
Код:
[UPD] Поправил косяки.. Count возвращает количесво элементов включая 0 [0..4] = 5, а обращение к 5-ому элементу станет ERangeError т.к. 5-го элемента нет. Последний раз редактировалось Человек_Борща; 26.01.2012 в 12:07. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Человек_Борща с каких пор индекс последнего элемента совпадает с количеством элементов? К-во = 5, индекс от 0 до 4. Ваш пример сразу вывалит ошибку, поскольку выход за пределы. Кто поражает гениальностью ещё вопрос
![]()
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#18 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
Count - вернёт кол-во элементов включая 0-ль. На момент добовления нового элемента, последний элемент будет = Count. Или логика не верна? Или Tlist стал на столько не логичным? или я опять бревно с домом попутал? [upd] Просёк фишку=) Опять бревно с домом спутал ![]() Последний раз редактировалось Человек_Борща; 26.01.2012 в 12:08. |
|
![]() |
![]() |
![]() |
#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 |