Ошибки, баги, вопросы - страница 3561

 
Andrey Dik #:

При работе с событиями - да, всё верно и понятно. Но проблема может возникнуть там, где её совсем не ожидаешь, например, в каких нибудь математических расчётах (в том же алглиб активно и повсеместно используются while).

с нехорошими фризами сталкивался когда баловался с канвасом. Полноэкранный Canvas вполне втормозит весь терминал. Если ещё и RDP то гарантированно

Может CUDA подвести, считать на видяхе это быстро и удобно, но она одна. 

 
Зачем спорить о очевидных вещах?
В руках ламера любой цикл может подвесить систему.
В руках опытного разработчика никакой цикл не подвесит систему, в том числе и с канвасом 8K
 
Maxim Kuznetsov #:

с нехорошими фризами сталкивался когда баловался с канвасом. Полноэкранный Canvas вполне втормозит весь терминал. Если ещё и RDP то гарантированно

Может CUDA подвести, считать на видяхе это быстро и удобно, но она одна. 

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

Т.е., проблема программы с while может проявляться когда процессор загружен другими процессами. Частично помогает рукопашное повышение приоритета процессу терминала. Ещё помогает оставление хотя бы одного агента невключенным.

 
Nikolai Semko #:
Зачем спорить о очевидных вещах?
В руках ламера любой цикл может подвесить систему.
В руках опытного разработчика никакой цикл не подвесит систему, в том числе и с канвасом 8K

старинный спор ? :-)

микрософту расскажи как им передавать и обновлять растр 8K хотя-бы 12 раз в секунду 

пока интерфейсы строятся обычными окнами (объектами MT) всё быстро, потому-что система знает что где поменялось и передаёт мелкие изменения и примитивы рисования. Про канвас она ничего не знает кроме его размера и что он поменялся - она вынуждена передать весь или устраивать аналог MJPEG на 8K. Сей процесс RDP легко выставляет и VDS и сетевое соединение. 

 
fxsaber #:

Я некомпетентен, подожду комментариев.

Не получается универсально преобразовать указатель в объект.

Не особо знаком с проблемой, но кто мешает разыменовать указатель в объект явно - funccall(*ptr) -  прежде чем делать множественные обращения к нему, например, в случае вызова (шаблонной) функции?

 
Stanislav Korotky #:

Не особо знаком с проблемой, но кто мешает разыменовать указатель в объект явно - funccall(*ptr) -  прежде чем делать множественные обращения к нему, например, в случае вызова (шаблонной) функции?

Вот пример.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Input_Struct

fxsaber, 2024.07.31 08:24

class SYSTEM
{
public: 
  SYSTEM( const string sInputs = NULL ) {}
  
  virtual void OnTick( void ) = NULL;
};

class MACD : public SYSTEM
{
private:
  MACD_INPUT Inputs;
  
public:
  MACD( const string sInputs = NULL ) : SYSTEM(sInputs)
  {
    this.Inputs.Default();
    this.Inputs = sInputs;
  }
  
  virtual void OnTick( void ) {}
};

SYSTEM* System = NULL;

void OnInit()
{
  System = new MACD(inInputsAll);
}

void OnDeinit( const int )
{
  delete System;
}

void OnTick()
{
  System.OnTick();
}

Как обращаться к объекту не через указатель при вызове OnTick-метода?

 
fxsaber #:

Вот пример.

Как обращаться к объекту не через указатель при вызове OnTick-метода?

Чисто технически отвечая на вопрос, переменную System можно описать как объект, а не указатель - для этого достаточно в качестве виртуального OnTick определить пустую реализацию в базовом классе и убрать =NULL/delete.

 
Stanislav Korotky #:

Чисто технически отвечая на вопрос, переменную System можно описать как объект, а не указатель - для этого достаточно в качестве виртуального OnTick определить пустую реализацию в базовом классе и убрать =NULL/delete.

Минутка юмора.

 
fxsaber #:

Минутка юмора.

Ну, я не понял, что нужно - "шашечки или ехать"? Вы хотите избавиться от разыменования указателя при каждом обращении к функции - единственный способ: разыменовать единожды или просто где-то хранить объект вместо указателя (на глобальном уровне, внутри другого объекта или статически).

 
Stanislav Korotky #:

где-то хранить объект вместо указателя (на глобальном уровне, внутри другого объекта или статически).

Не получается хранить объект, созданный через new.