powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / виснет экранная форма
25 сообщений из 155, страница 4 из 7
виснет экранная форма
    #40107584
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,
правильно вам сказали
вы смотрели реализацию Lines у Memo?
как вы думаете, быстро идёт запрос к окну в другом потоке?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107589
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
YuRock
обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру.

Читать-то зачем через критическую секцию? Если читать только для того, чтобы прочитать, не надо себя ограничивать. Вот если читать для того, чтобы по результату обновить, а-ля транзакция, тогда, конечно, да. И заключить в скобки всю транзакцию.
Чтобы получить консистентные данные. Вряд ли результатом расчета его потока является одна переменная размером в регистр.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107595
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73,
правильно вам сказали
вы смотрели реализацию Lines у Memo?
как вы думаете, быстро идёт запрос к окну в другом потоке?

очень быстро.
у меня в потоке, при отправке и получении данных по сети, идет визуальное отбражение "лампочек" на главной форме.
все мигает на ура.
гигантские объёмы информации обмена с базой данных в онлайне - ничего не висит. еще обмен данными с принтерами... и т.д. - ничего не висит. все зависание начинается с отрисовки окошек...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107596
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Тут и своя очередь не поможет.
В Queue влазит 2 миллиарда элементов. Это немного больше 10 тысяч.

Причем все происходит, как говориться, in-house, а не где-то в черном ящике системы, за пределами процесса.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107609
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
не висит. все зависание начинается с отрисовки окошек...

тогда и смотрите отрисовку окошек, может у вас GDI объекты не удаляются? (в диспетчере задач можно посмотреть использование GDI-объектов)
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107659
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
10000 сообщений в очереди. Все висят. Этим не хвастаться нужно, а исправлять.
Отправлять запросы в другой поток и ждать ответа и между делом работать с очередью.
Когда я понимал, что в очереди 100 сообщений висят, то этого было достаточно для понимания, что проблема не в очередях.
10000 сообщений, Карл! Этого мало. :(
Тут и своя очередь не поможет.

Если выборка медленней добавления - раскидывать смысла нет, по крайней мере, в моём случае это лишь сильно усложнит процесс. Вообще можно блокировать добавление по достижению лимита, но ситуация с переполнением нештатная, и делать ей отдельную обработку не особо нужно. Но уточню - именно в моём случае.

Вот чем виндовые очереди неудобны, так это невозможностью итерации. Можно вычерпать определенный диапазон, да, но проверить количество сообщений в ней уже нельзя.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107693
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,

AQTime тральный думаю поможет понять самые узкие места. Или другой профайлер. Иначе никак, гадать можно бесконечно...
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107698
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если использовался мемо то вполне возможно автор не знает про beginupdate и endupdate, а без этого добавление строк может превратиться в тот еще тормоз
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107701
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107748
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

ну в край то уже не нагоняй, давно не копал, есть в нём добавление
правда за 3 вызова оконной функции
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107751
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)есть в нём добавление правда за 3 вызова оконной функции

Вот только TMemo.Lines.Add работает именно как SetText(GetText + Str);
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107897
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.




я уже давно переписал обмен без TMemo, о чем писал выше.
однако - это все ловля блох, не меняющая сути проблемы.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107898
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)
Mizer73,
правильно вам сказали
вы смотрели реализацию Lines у Memo?
как вы думаете, быстро идёт запрос к окну в другом потоке?


уже нет мемо, а суть не поменялась
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107899
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73однако - это все ловля блох, не меняющая сути проблемы.

Естественно, исходники-то есть только у тебя и только ты можешь разобраться
почему они работают так как работают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107901
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mizer73
Dimitry Sibiryakov
Оно в любом случае тормоз, поскольку в EDIT принципе не имеет способа добавить
строку. Это делается через получение целого текста, его модификацию и посылку
обратно. Поэтому TMemo для лога - один из наихудших вариантов.




я уже давно переписал обмен без TMemo, о чем писал выше.
однако - это все ловля блох, не меняющая сути проблемы.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
struct Dat
{
	byte cmd;
	byte cmd2;
	byte data;
};

struct InOutData
{
	Dat * Data;
	int Count;
	int CountAll;
	void Create(int n)
	{
		Data = new Dat[n];
		CountAll = n;
	};
	void Delete(void)
	{
		if (CountAll > 0)
		{
			delete Data;
		}
	};
	void Remove(int y)
	{
		if (Count > 0)
		{
			for (int i = y; i < Count - 1; i++)
			{
				Data[i].cmd = Data[i + 1].cmd;
				Data[i].cmd2 = Data[i + 1].cmd2;
				Data[i].data = Data[i + 1].data;
			}
			Count--;
			Data[Count].cmd = 0;
			Data[Count].cmd2 = 0;
			Data[Count].data = 0;
		}
	}
};
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107903
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73однако - это все ловля блох, не меняющая сути проблемы.

Естественно, исходники-то есть только у тебя и только ты можешь разобраться
почему они работают так как работают.

однако, у меня есть пара процессов в отдельных потоках, которые успешно работают с к компортами - принимают сообщения.
оттуда и взял мысль - вынести в отдельный поток обмен данными по сети.

скорость обмена- 1-2 сообщения 3-байтовых в секунду.
это что, нагрузка?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107904
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73это что, нагрузка?

Нет, с этим справился бы и компьютер прошлого века, причём не выходя из
энергосберегающего режима. Если ЭТО у тебя тормозит, значит что-то у тебя
совершенно запредельно криво и никто на этом форуме даже в пьяном бреду не
сможет угадать что именно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107907
Mizer73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Mizer73это что, нагрузка?

Нет, с этим справился бы и компьютер прошлого века, причём не выходя из
энергосберегающего режима. Если ЭТО у тебя тормозит, значит что-то у тебя
совершенно запредельно криво и никто на этом форуме даже в пьяном бреду не
сможет угадать что именно.

а я не говорю о том, что ЭТО тормозит.
я спрашиваю, что может так затормаживать экранные элементы.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107912
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну мы так можем долго гадать на кофейной гуще, ответ - "что-то в основном потоке" тебя устроит?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107913
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73,
Так тебе ответили - запредельная? кривизна твоего кода. Имхо, ты взялся за непосильную пока для тебя задачу. Не хватает элементарных знаний по потокам и пользованию профайлером/дебаггером. Другой бы уже давно отпрофилировал и нашёл все бутылочные горлышки, а ты всё сеанс спиритизма на форуме пытаешься устроить
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107914
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73
я спрашиваю, что может так затормаживать экранные элементы.
Любой [полу]вучный цикл.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107915
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Mizer73
А вы так и не показали свой код, который в основном потоке принимает/читает данные из СОМ-порта. Вы стесняетесь его показывать или что?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107916
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener
2 Mizer73
А вы так и не показали свой код, который в основном потоке принимает/читает данные из СОМ-порта. Вы стесняетесь его показывать или что?
Зато он показал несколько раз структуру принимаемых данных.
Изначально было ясно, что проблема в неконсистенции ее. Ну, так мой шар показывает.
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107941
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73

а я не говорю о том, что ЭТО тормозит.
я спрашиваю, что может так затормаживать экранные элементы.


22389174 - с утечками то всё в порядке, проверили?
...
Рейтинг: 0 / 0
виснет экранная форма
    #40107945
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mizer73

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
struct Dat
{
	byte cmd;
	byte cmd2;
	byte data;
};

struct InOutData
{
	Dat * Data;
	int Count;
	int CountAll;
	void Create(int n)
	{
		Data = new Dat[n];
		CountAll = n;
	};
	void Delete(void)
	{
		if (CountAll > 0)
		{
			delete Data;
		}
	};
	void Remove(int y)
	{
		if (Count > 0)
		{
			for (int i = y; i < Count - 1; i++)
			{
				Data[i].cmd = Data[i + 1].cmd;
				Data[i].cmd2 = Data[i + 1].cmd2;
				Data[i].data = Data[i + 1].data;
			}
			Count--;
			Data[Count].cmd = 0;
			Data[Count].cmd2 = 0;
			Data[Count].data = 0;
		}
	}
};


Я извиняюсь, плюсы не очень знаю, но что-то тут полный треш..

При Delete у вас данные уничтожаются, но переменные Count и CountAll не сбрасываются. В итоге это может привести к попытке доступа к несуществующему полю.
При Remore у вас уменьшается количество, но кроме того, что затирается Data[y], у вас затирается Data[Count-1].
...
Рейтинг: 0 / 0
25 сообщений из 155, страница 4 из 7
Форумы / Delphi [игнор отключен] [закрыт для гостей] / виснет экранная форма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]