|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2012, 22:55 | #1 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
небольшой вопрос про TThread
вот смотрите, есть такая штука как синхронизация.
используется для обращения из потока к каким-то общим данным. насколько я понимаю работает так: поток останавливается, какие-то действия, поток продолжает работу. обдумывая логику такого алгоритма, пришел к выводу что во время синхронизации останавливаются ВСЕ потоки в программе. я правильно думаю? и отсюда возможное решение одной задачи. допустим в каком-то потоке выполняются какие-то операции и их результат отображается в таблице (добавляется ячейка), таблица при этом перерисовывается. в обычном режиме все это работает нормально, но как только запихнул процедуру в поток, начались некрасивые вещи... скорее всего это связано с использованием потоков, потому что если таблицу отрисовывать во время синхронизации, то все рисуется нормально. так вот, вместо того чтобы запускать синхронизацию из объекта, в котором выполняются операции, можно ли запускать ее непосредственно в отрисовке таблицы? т.е. допустим таблица имеет свой поток, существующий на протяжении жизни таблицы. получив команду на отрисовку, таблица запускает синхронизацию уже из своего потока, который в свою очередь, останавливает и тот поток, откуда получена команда. что думаете по поводу такой системы? |
22.03.2012, 23:00 | #2 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
22.03.2012, 23:10 | #3 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
смысл: запуск синхронизации из основного потока добавляет гемора.
хотелось бы упростить использование таблицы, сделать ее более универсальной. чтобы из любого объекта, любого потока работать с ней и не знать проблем. |
23.03.2012, 16:46 | #4 | ||
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Цитата:
Цитата:
пыщь
Последний раз редактировалось JTG; 23.03.2012 в 16:55. |
||
23.03.2012, 18:16 | #5 |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
задача банальна как никогда - чтобы прога работала, а форма не висела.
но если с Synchronize останавливается только вызвавший поток, то моя система работать не будет... |
23.03.2012, 22:08 | #6 |
Сумрачная тень
Форумчанин
Регистрация: 05.03.2009
Сообщений: 689
|
Автор, читайте теорию про потоки и разбирайте простейшие примеры. Все работает на потоках отлично, причем у всех, кто ими пользуется. 95% вашего кода выполняется современными процессорами за миллисекунды. Вы этих зависаний не увидите в жизни. Компилятор не дурак, оптимизирует код еще как.
"ковыряю изнутри" (с)
|
24.03.2012, 05:00 | #7 | ||||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Если в программе есть 10 потоков и из них один держит какой-то ресурс, а ещё два потока запрашивают к нему доступ, то два потока будут стоять, а 8 потоков - работать. Цитата:
Цитата:
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Небольшой вопрос про структуру | Jack125 | Общие вопросы C/C++ | 4 | 08.03.2012 14:15 |
Вопрос по TThread | Федеор | Общие вопросы Delphi | 6 | 14.11.2010 16:52 |
Небольшой вопрос про массив | grave123 | Общие вопросы C/C++ | 8 | 06.12.2009 16:46 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |