Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / синхронизация потоков / 25 сообщений из 25, страница 1 из 1
01.10.2021, 01:11
    #40101133
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
есть основная прога, и несколько потоков.
в основной проге куча таймеров, событий, обработок и всяко.
если я запускаю доп потоки, то они, получается, делят общее процессорное время. и тогда основная прога начинает конкретно тормозить.
как их сбалансировать?
...
Рейтинг: 0 / 0
01.10.2021, 01:19
    #40101135
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73если я запускаю доп потоки, то они, получается, делят общее процессорное время.
и тогда основная прога начинает конкретно тормозить.

Нет, само по себе так не происходит. Что-то ты должен был сделать реально
неправильно для такого эффекта.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.10.2021, 01:29
    #40101137
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
как их сбалансировать?
Забей, пусть работают в поте лица, винда сама сбалансирует всё.
...
Рейтинг: 0 / 0
01.10.2021, 01:53
    #40101138
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
как их сбалансировать?

Ядер + быстрой памяти побольше.
...
Рейтинг: 0 / 0
01.10.2021, 02:28
    #40101140
northener
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
есть основная прога, и несколько потоков.
в основной проге куча таймеров, событий, обработок и всяко.
если я запускаю доп потоки, то они, получается, делят общее процессорное время. и тогда основная прога начинает конкретно тормозить.
как их сбалансировать?

Вообще-то занять процессор так сильно весьма сложно. А основная прога может тормозить и из-за неправильной реализации доппотоков.
...
Рейтинг: 0 / 0
01.10.2021, 09:47
    #40101199
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
как их сбалансировать?

Убрать вызов synchronize?
...
Рейтинг: 0 / 0
01.10.2021, 11:18
    #40101237
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
wadman
synchronize

без этого тоже беда
...
Рейтинг: 0 / 0
01.10.2021, 11:19
    #40101238
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
пока поставил приоритеты доп потокам поменьше. стало лучше. поставлю минимальный приоритет. попробую...
...
Рейтинг: 0 / 0
01.10.2021, 11:20
    #40101239
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
YuRock
Mizer73
как их сбалансировать?
Забей, пусть работают в поте лица, винда сама сбалансирует всё.

да ни фига она не балансирует. основная прога еле шевелиться, зато по доп птокам все не то, что бы летает - мерцает неуловимо )))
...
Рейтинг: 0 / 0
01.10.2021, 11:21
    #40101240
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Dimitry Sibiryakov
Mizer73если я запускаю доп потоки, то они, получается, делят общее процессорное время.
и тогда основная прога начинает конкретно тормозить.

Нет, само по себе так не происходит. Что-то ты должен был сделать реально
неправильно для такого эффекта.
для того и обратился к потокам, что бы некоторые вещи работали независимо шустро от остальных вещей.
...
Рейтинг: 0 / 0
01.10.2021, 11:31
    #40101246
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
основная прога еле шевелиться,
Код потоков мы увидим?
...
Рейтинг: 0 / 0
01.10.2021, 12:14
    #40101268
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
Dimitry Sibiryakov
пропущено...

Нет, само по себе так не происходит. Что-то ты должен был сделать реально
неправильно для такого эффекта.

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


Попробуйте изучить матчасть "Как правильно работать с потоками". Например здесь .
...
Рейтинг: 0 / 0
01.10.2021, 14:20
    #40101336
zedxxx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
wadman
synchronize

без этого тоже беда

Как много работы выполняется внутри этого блока?
...
Рейтинг: 0 / 0
01.10.2021, 14:30
    #40101344
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
wadman
synchronize

без этого тоже беда
Беда в смысле медленно или какая-то другая беда?
...
Рейтинг: 0 / 0
01.10.2021, 15:07
    #40101358
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73
основная прога еле шевелиться
Проблема в ней
...
Рейтинг: 0 / 0
01.10.2021, 23:25
    #40101474
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
_Vasilisk_
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
#include "ArdoThread.h"
ArdoThread *ardor;

ardor = new ArdoThread(false);
ardor->FreeOnTerminate = true;


ardor = new ArdoThread(false);
ardor->FreeOnTerminate = true;
SetThreadPriority(ardor, THREAD_PRIORITY_NORMAL);


__fastcall ArdoThread::ArdoThread(bool CreateSuspended)
	: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall ArdoThread::Execute()
{
	pingdt1 = Now() + Seca(25);
	pingdt2 = Now() + Seca(25);
	int met = 1;
	try
	{
		int y = 0;
		double sc = Now();
		Sleep(200);
		double sy = Now();
		Sleep(300);
		double lo = Now();
		while(!Terminated)
		{
// тут ловлю не установление коннекта и перегружаю форму. pingdt1 - фиксация времени получения последнего ответа 
			if ((IPPort->Connected() && pingdt1 - Now() > 0,0104) || (IPPort->Connected() && pingdt2 - Now() > 0,0104)) {
                LiteReset = true;
			}
			Ex_Operator->Label98->Caption = Now();
			if (!Ex_Operator->NoProcess)
			{
				if (sc < Now()) {
					try
					{
						Synchronize(Ping);
					}
					catch (Exception &e)
					{
						AnsiString a = e.ToString();
						MessageBoxA(Ex_Operator->Handle, a.c_str(), "сенд", MB_OK);
					}
					sc = Now() + Seca(1);

				}
				//if (sc < Now())
				{
					try
					{
						String l = Ex_Operator->Ardo1Memo->Lines->Strings[0].Trim();
						if (l.Length() > 0)
							Synchronize(Printing);
						l = Ex_Operator->Ardo2Memo->Lines->Strings[0].Trim();
						if (l.Length() > 0)
							Synchronize(Printing2);

					}
					catch(Exception &e)
					{
						AnsiString a = e.ToString();
						MessageBoxA(Ex_Operator->Handle, a.c_str(), "принтинг", MB_OK);
					}
					//sy = Now() + Seca(0.5);
				}
				if (lo < Now())
				{
					try
					{
						Synchronize(DoLogika);

					}
					catch(Exception &e)
					{
						AnsiString a = e.ToString();
						MessageBoxA(Ex_Operator->Handle, a.c_str(), "логика", MB_OK);
					}
					//sy = Now() + Seca(1);
				}
			}
		}
		//Synchronize(Printing);
	}
	catch(...)
	{

	}
...
Рейтинг: 0 / 0
01.10.2021, 23:34
    #40101475
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
zedxxx,

1. пару пингов (отсылкой по 3 байта)
2. 2 процесса отправки команд из стека команд
3. блок распознавания ответов от внешних устройств с записью логов в БД

поставил ему приоритет, чуть ниже обычного. стало дружить.
...
Рейтинг: 0 / 0
02.10.2021, 00:16
    #40101481
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
У тебя пинг делается в главном потоке. Всё бессмысленно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2021, 01:01
    #40101486
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Dimitry Sibiryakov
У тебя пинг делается в главном потоке. Всё бессмысленно.

почему?
...
Рейтинг: 0 / 0
02.10.2021, 01:04
    #40101487
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Mizer73почему?

Потому что всё, что в Syncronize() - выполняется в главном потоке. Я не знаю
зачем ты написал Synchronize(Ping);. Архангельского обчитался, наверное...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2021, 08:11
    #40101496
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Dimitry Sibiryakov
У тебя пинг делается в главном потоке.
Зато обращение к компонентам форм - в дополнительном.
...
Рейтинг: 0 / 0
02.10.2021, 08:24
    #40101497
Vizit0r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
классическое "я не прошу у вас совета, как сделать правильно, я прошу у вас подсказки, как быстро и легко подправить неправильный код, чтобы он работал как я хочу"
...
Рейтинг: 0 / 0
02.10.2021, 12:24
    #40101508
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Dimitry Sibiryakov,

о, спасибо за подсказку.
...
Рейтинг: 0 / 0
02.10.2021, 12:25
    #40101509
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Dimitry Sibiryakov
Mizer73почему?

Потому что всё, что в Syncronize() - выполняется в главном потоке. Я не знаю
зачем ты написал Synchronize(Ping);. Архангельского обчитался, наверное...

делал предыдущую штуку обмена по компорту, по "учебнику" какому то...
...
Рейтинг: 0 / 0
02.10.2021, 12:28
    #40101510
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синхронизация потоков
Vizit0r
классическое "я не прошу у вас совета, как сделать правильно, я прошу у вас подсказки, как быстро и легко подправить неправильный код, чтобы он работал как я хочу"


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


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