Erros, bugs, perguntas - página 2778

 
Alain Verleyen:

Outro Terminal, mas 20 gráficos (símbolos diferentes), começou ao mesmo tempo.

Verifiquei no AUDUSD onde entra o pico:

2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Quantidade = 240
2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Min = 38
2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Max = 2235
2020.06.13 09: 16: 35.151 342152 (USDJPY, H1) Avg = 472
2020.06.13 09: 16: 35: 35151 342152 (CADCHF, H1) Avg = 240
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Min = 48
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Max = 2323
2020.06.06.13 09: 16: 35.152 342152 (CADCHF, H1) Avg = 606
2020.06.13 09: 16: 35.152 342152 (EURAUD, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Min = 141
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Quantidade = 240
2020.06.13 09: 16: 35152 342152 (CHFJPY, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Mín. = 47
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Mín. = 23
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Max = 2368
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Avg = 607
2020.06.13 09: 16: 35: 35.152 342152 (AUDUSD, H1) Min = 74
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (USDCHF, H1) Avg = 240
2020.06.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Min = 122
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Max = 2402
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Avg = 660
2020.06.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Min = 157
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Max = 2354
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Avg = 663
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Min = 32
2020.06.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Max = 2380
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Avg = 616
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Max = 2327
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Avg = 618
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Min = 36
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Max = 2233
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1) Avg = 503
2020.06.13 09: 16: 35.152 342152 (CHFJPY, H1) Min = 11
2020.06.13 09: 16: 35.152 342152 (EURGBP, H1)13 09: 16: 35.152 342152 (CHFJPY, H1) Max = 2387
2020.06.13 09: 16: 35.152 342152 (CHFJPY, H1) Avg = 657
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Max = 2292
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Avg = 612
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Quantidade = 240
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Min = 54
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Max = 2361
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Avg = 612
2020.06.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Min = 121
2020.06.13 09: 16: 35.152 342152 (EURCAD, H1) Avg = 240
2020.06.13 09: 16: 35: 35.152 342152 (AUDCAD, H1) Máximo = 2328
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 605
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Máximo = 2361
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Avg = 611
2020.06.13 09: 16: 35152 342152 (GBPJPY, H1) Min = 13
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Max = 2411
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Avg = 661
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Avg = 240
2020.06.13 09: 16: 3513 09: 16: 35.153 342152 (GBPUSD, H1) Min = 113
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Max = 2362
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Avg = 667
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Quantidade = 240
2020.06.06.13 09: 16: 35.153 342152 (USDCAD, H1) Min = 151
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Max = 2386
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Min = 35
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Avg = 671
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Max = 2233
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Avg = 478
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Quantidade = 240
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Min = 10
2020.06.06.13 09: 16: 35.153 342152 (EURCAD, H1) Min = 123
2020.06.13 09: 16: 35.153 342152 (EURCAD, H1) Max = 2384
2020.06.13 09: 16: 35.153 342152 (EURCAD, H1) Avg = 658
2020.06.13 09: 16: 35.153 342152 (USDCHF, H1) Min = 32
2020.06.06.13 09: 16: 35.153 342152 (USDCHF, H1) Max = 2369
2020.06.13 09: 16: 35.153 342152 (USDCHF, H1) Avg = 614
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Max = 2344
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Avg = 658

E isto é quando os topos entram:

2020.06.13 09: 17: 35.151 342152 (USDJPY, H1) Avg = 480
2020.06.13 09: 17: 35.151 342152 (USDJPY, H1) Min = 38
2020.06.13 09: 17: 35.151 342152 (USDJPY, H1) Max = 17421
2020.06.06.13 09: 17: 35.151 342152 (USDJPY, H1) Avg = 533
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Quantidade = 480
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Min = 35
2020.06.06.13 09: 17: 35.151 342152 (EURAUD, H1) Max = 17406
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Avg = 518
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Quantidade = 480
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Min = 36
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Max = 17425
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Avg = 515
2020.06.13 09: 17: 35: 35.151 342152 (EURUSD, H1) Quantidade = 480
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Min = 18
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Max = 17366
2020.06.13 09: 17: 35: 35.151 342152 (EURCHF, H1) Máximo = 480
2020.06.13 09: 17: 35.151 342152 (EURUSD, H1) Avg = 618
2020.06.13 09: 17: 35.151 342152 (AUDCHF, H1) Máximo = 480
2020.06.13 09: 17: 35.151 342152 (USDCHF, H1) Quantidade = 480
2020.06.13 09: 17: 35.151 342152 (AUDCHF, H1) Min = 126
2020.06.13 09: 17: 35.151 342152 (CADCHF, H1) Quantidade = 480
2020.06.13 09: 17: 35151 342152 (AUDCHF, H1) Máximo = 10477
2020.06.13 09: 17: 35.151 342152 (EURCAD, H1) Quantidade = 480
2020.06.13 09: 17: 35.151 342152 (GBPUSD, H1) Quantidade = 480
2020.06.13 09: 17: 35.152 342152 (EURCAD, H1) Min = 123
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Min = 112
2020.06.13 09: 17: 35.152 342152 (EURCAD, H1) Max = 10485
2020.06.13 09: 17: 35: 35.152 342152 (EURCAD, H1) Avg = 663
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Max = 10435
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Avg = 661
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Min = 71
2020.06.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 480
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Avg = 480
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Min = 54
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Min = 10
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Max = 10487
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 664
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 664.13 09: 17: 35.152 342152 (EURNZD, H1) Quantidade = 480
2020.06.13 09: 17: 35.152 342152 (EURNZD, H1) Mín = 54
2020.06.13 09: 17: 35.152 342152 (EURNZD, H1) Máximo = 17426
2020.06.06.13 09: 17: 35.152 342152 (EURNZD, H1) Avg = 620
2020.06.13 09: 17: 35.152 342152 (USDCHF, H1) Min = 32
2020.06.13 09: 17: 35.152 342152 (USDCHF, H1) Max = 17427
2020.06.13 09: 17: 35: 35.152 342152 (USDCHF, H1) Avg = 649
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Max = 480
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Min = 32
2020.06.13 09: 17: 35152 342152 (GBPCHF, H1) Max = 17433
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Avg = 647
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Min = 480
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Min. = 47
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Max = 17415
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Avg = 640
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Min = 48
2020.06.13 09: 17: 35: 35.152 342152 (CADCHF, H1) Máximo = 17435
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Avg = 637
2020.06.13 09: 17: 35.152 342152 (AUDCHF, H1) Avg = 662
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Quantidade = 480
2020.06.13 09: 17: 35152 342152 (AUDUSD, H1) Min = 43
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Max = 17416
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Avg = 620
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Quantidade = 480
2020.06.13 09: 17: 3513 09: 17: 35.152 342152 (GBPJPY, H1) Min = 13
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Max = 10468
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Avg = 660
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Quantidade = 480
2020.06.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Min = 11
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Max = 10474
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Quantidade = 480
2020.06.13 09: 17: 35: 35.152 342152 (AUDNZD, H1) Min = 61
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Max = 10491
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Avg = 663
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Max = 17414
2020.06.13 09: 17: 35152 342152 (EURCHF, H1) Avg = 646
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Max = 480
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Min = 100
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Max = 17421
2020.06.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Avg = 638
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Máximo = 10488
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Avg = 666
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Avg = 656

Portanto, tudo aconteceu ao mesmo tempo. Mas isto ainda pode ser um problema de MT5. Irei verificar com outros terminais simultâneos.

A julgar pelos registos, a desaceleração num não coincidiu com a desaceleração no outro, ou seja, não simultaneamente. Portanto, o problema está no próprio terminal.

 

Os programas MQL5 funcionam (métodos Get/Set) com um gráfico através de uma fila de transacções.

Isto permite libertar a GUI e o próprio terminal dos bloqueios inevitáveis que seriam um problema para os programas MQL5.

A assíncronia transaccional permite a escrita ou leitura rápida em modos separados e permite o modo de sincronização imediatamente ao misturar os métodos Set e Get.

Ou seja, é melhor fazer o Set assíncrono 1000 vezes e depois Get 1000 vezes em vez de fazer o Get & Set alternativo, transformando a fila num processo síncrono. Porque é necessário certificar-se de que o conjunto assíncrono anterior estava exactamente sobreposto e agora pode lê-lo.


É necessário utilizar cuidadosamente as funções do sistema e armazená-las em cache sempre que possível.

 
Renat Fatkhullin:

É necessário utilizar cuidadosamente as funções do sistema e armazená-las em cache sempre que possível.

À tarde, o problema é um pouco diferente - o ChartGetInteger e funções semelhantes são MUITO lentas de executar.
Ao passar de construir 2009 para construir 2485, o tempo de execução de ChartGetInteger aumentou de 5ms para 200-250ms de pico, especialmente torna-se um problema quando 50+ gráficos estão abertos.
Sistema: Terminal Windows 10 build 18363, Intel Core i7-7700HQ @ 2.80GHz, 19 / 31 GB de memória, disco 262 / 640 GB, monitor 4K, NVidia 1050Ti
Foi utilizado ocódigo da descrição do problema:https://www.mql5.com/en/forum/342152

Possíveis causas do problema:

Insectos, insectos, problemas

Sergey Dzyublik, 2020.06.13 19:20

Comparei a implementação da função ChartGetInteger para duas versões do MT5 2009 e MT5 2485, talvez o problema seja o seguinte:
1. Em 2485 para ler os campos "atómicos" de um objecto gráfico usamos operações bastante lentas:
mfence; lock mov eax,[rax+2C];
Enquanto em 2009 construir isto é feito usando: lock xadd [rcx+2C],eax

2. também parece que a lógica e o tempo de permanência possível na secção ntdll_RtlEnterCriticalSection mudaram significativamente.
Anteriormente, em 2009, uma secção crítica apenas verificava um par de valores recebidos, sem quaisquer operações atómicas.
E em 2485, os objectos da lista ligada do gráfico poderiam ser enumerados adicionalmente.


Presumivelmente, o problema poderia acontecer quando o acidente fosse corrigido quando se trabalhava com funções de gráficos como parte da migração para o novo compilador (cerca de 2-3 meses atrás).
O código de montagem para a chamada ChartGetInteger em MT5 (build 2485) está anexado.



 
Vamos lá ver.
 
Renat Fatkhullin:
Veja isto.

Passos para a reprodução:

long chart_id;

int OnInit(){
   for(int i = 0; i < 95; ++i){
      ChartOpen(_Symbol, _Period);
   }

   chart_id = ChartID();
   EventSetMillisecondTimer(250);
   return(INIT_SUCCEEDED);
}

void OnTimer(){
  ulong t=GetMicrosecondCount();
  long autoscroll = ChartGetInteger(chart_id, CHART_AUTOSCROLL);
  ulong delay =(GetMicrosecondCount()-t)/1000;
  if (delay>0){
    Print("Execution delay: ",delay, " ms");
  }
}


1. Pegue num terminal MT limpo, abra um gráfico nele, execute a EA compilada acima nesse gráfico.
2. Após abrir todos os 95 novos gráficos, expandir a janela do gráfico até à largura total do espaço gráfico em MT, se isto não tiver sido feito antes.
3. Para passar de um separador gráfico para outro e registar do registo os valores de tempo de execução do ChartGetInteger.
Para fechar todos os gráficos abertos, pode premir e segurar CTRL+W


Resultado de MT5 (construção 2009):

2020.06.14 15:33:43.173 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:43.674 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:44.177 Test123456 (EURUSD,H1)  Execution delay: 5 ms
2020.06.14 15:33:44.422 Test123456 (EURUSD,H1)  Execution delay: 4 ms
2020.06.14 15:33:44.673 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:44.923 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:45.173 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:45.423 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:45.672 Test123456 (EURUSD,H1)  Execution delay: 2 ms


Resultado MT5 (buidl 2485):

2020.06.14 15:33:12.947 Test123456 (EURUSD,H1)  Execution delay: 163 ms
2020.06.14 15:33:13.198 Test123456 (EURUSD,H1)  Execution delay: 1 ms
2020.06.14 15:33:13.293 Test123456 (EURUSD,H1)  Execution delay: 1 ms
2020.06.14 15:33:13.831 Test123456 (EURUSD,H1)  Execution delay: 287 ms
2020.06.14 15:33:14.702 Test123456 (EURUSD,H1)  Execution delay: 136 ms
2020.06.14 15:33:15.316 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:15.677 Test123456 (EURUSD,H1)  Execution delay: 110 ms
2020.06.14 15:33:17.041 Test123456 (EURUSD,H1)  Execution delay: 221 ms


Comparação dos resultados e conclusões:
1. O número de registos que são exibidos em 2009 construídos é muito superior aos registos em 2485 construídos.
A função ChartGetInteger em "condições normais" tornou-se mais rápida depois de mudar para construir 2485.

2. O tempo de pico de execução para 2009 construir - 15 ms, e para 2485 construir - 310 ms.
A função ChartGetInteger em "condições desfavoráveis" torna-se até 20 vezes mais lenta depois de mudar para construir 2485.

3. da mesma forma que se pode estimar a velocidade de abertura de 95 gráficos por olho.
Para ambas as construções, a complexidade "exponencial" do número de gráficos abertos anteriormente é perceptível, bem como uma execução significativamente mais rápida na construção de 2009.

 
Stanislav Korotky :

A julgar pelos registos, a desaceleração num não coincidiu com a desaceleração no outro, ou seja, não simultaneamente. Portanto, o problema está no próprio terminal.

O registo só é impresso a cada minuto (a tradução estragou o carimbo de hora!!), eu poderia verificar com mais precisão, mas não vale a pena.

Experimentei em vários terminais e mostra claramente que os picos NÃO são simultâneos. Isto é claramente uma coisa do MT5.

 
Renat Fatkhullin :

Os programas MQL5 funcionam (métodos Get/Set) com um gráfico através de uma fila de transacções.

Isto permite libertar o GUI e o próprio terminal dos bloqueios inevitáveis que seriam um problema para os programas MQL5.

A assíncronia transaccional permite a escrita ou leitura rápida em modos separados e permite o modo de sincronização imediatamente ao misturar os métodos Set e Get.

Ou seja, é melhor fazer o Set assíncrono 1000 vezes e depois Get 1000 vezes em vez de fazer o Get & Set alternativo, transformando a fila num processo síncrono. Porque é necessário certificar-se de que o conjunto assíncrono anterior estava exactamente sobreposto e agora pode lê-lo.


É necessário utilizar cuidadosamente as funções do sistema e armazená-las em cache sempre que possível.

É um sistema compreensível e bom. Mas penso que há uma falha algures, como @Sergey Dzyubli também demonstrou.
Sergey Dzyublik
Sergey Dzyublik
  • www.mql5.com
Добавил тему Вход через MQL5.community (OAuth) В настройках профиля появилась новая вкладка Приложения (https://www.mql5.com/ru/users/USER_NAME/apps): Эта функция позволяет людям авторизоваться на вашем сайте или в приложении, используя аккаунт MQL5.community. Технология проста и безопасна. Она Добавил...
 
Alexey Navoykov:
Tanto quanto sei, a chamada de ChartRedraw não provoca o redesenho imediato do gráfico. O redesenho só acontece quando algum método Get-method é chamado.
E o ChartRedraw é essencialmente o mesmo método assíncrono. Assim, a sua medição BuildChart não é fiável.

tentar trocar estas duas linhas

então não haverá nada de assíncrono na medição e ver o que acontece. Será ainda mais rápido.

 
fxsaber:
Há muito tempo que é burro, não compreendendo o que o compilador não gosta nesta linha.

Esqueci-me de escrever se. Pensei que seria uma boa ideia mastigar a mensagem para tais burros.

Pediu-me para fazer uma descrição e exemplo de todos os erros de compilação e avisos há cerca de 5 anos, talvez mais.

Talvez consiga fazer melhor.

 
Renat Fatkhullin:

Os programas MQL5 funcionam (métodos Get/Set) com um gráfico através de uma fila de transacções.

Isto permite libertar o GUI e o próprio terminal de bloqueios inevitáveis que seriam um problema para os programas MQL5.

A assíncronia transaccional permite a escrita ou leitura rápida em modos separados e permite o modo de sincronização imediatamente ao misturar os métodos Set e Get.

Ou seja, é melhor fazer o Set assíncrono 1000 vezes e depois Get 1000 vezes em vez de fazer o Get & Set alternativo, transformando a fila num processo síncrono. Porque tem de se certificar de que o anterior conjunto assíncrono estava exactamente sobreposto e agora pode lê-lo.


É necessário utilizar cuidadosamente as funções do sistema e armazená-las em cache sempre que possível.

Compreendo correctamente que não só os métodos Set são assíncronos, mas também Get as well?
Ilyas estava errado aqui , não estava?
E Slava estava mesmo aqui quando disse que o método ChartXYToTimePrice é assíncrono? Afinal de contas, o método ChartXYToTimePrice refere-se muito provavelmente aos métodos Get.

A documentação fala apenas de assíncronia dos métodos Set.

Razão: