Programação assíncrona e multi-tarefa em MQL - página 33

 
Roman:

Eu gosto de tudo )) diferentes abordagens para entender e depois escolher aquela que faz mais sentido para mim e que se encaixa nos requisitos, é simples.

O mundo inteiro trabalha com DLL, com as maravilhas da ICL apenas um grupo de sectários que pensam que é a mais alta competência.
 
Yuriy Asaulenko:
O mundo inteiro trabalha com DLL, apenas um grupo de sectários que pensam que é o trabalho de competência final com milagres MKL.

Isso é hilariante, e eu não poderia concordar mais ))))
Bem ido para ler os manuais e pensar sobre as opções oferecidas.
Graças a todos os que realmente não flubrificam, sugeriram várias soluções.
Agora há muito por onde escolher.

 
A propósito, isso me faz lembrar de uma velha piada.
Congresso Médico Internacional. Relatório da delegação russa - "Remoção de amígdalas através do ânus".
Nós o lemos. Seguido de perguntas da platéia.
- Admiramos a habilidade e as realizações da cirurgia russa. Mas por que através da passagem de trás?
- É assim que todos nós o fazemos.
 
Vict:

Entendo corretamente que Futuros e Async são padrão apenas para C++ ?
Não existe uma biblioteca similar em C ?

 
Roman:

Entendo corretamente que Futuros e Async são padrão apenas para C++ ?
Não existe uma biblioteca similar em C ?

Certo. Cish std também tem suporte multithreading https://en.cppreference.com/w/c/thread

ZS: você também poderia ler o livro "c++ concurrency in action" de Anthony Williams. Por exemplo, no capítulo 9, ele escreve um "pool de fios".

Thread support library - cppreference.com
  • en.cppreference.com
If the macro constant is defined by the compiler, the header and all of the names listed here are not provided. Function names, type names, and enumeration constants that begin with either , , , or , and a...
 
Vict:

Certo. Cish std também tem suporte multi-threading https://en.cppreference.com/w/c/thread

HH: você também poderia ler o livro "c++ concurrency in action" de Anthony Williams. Por exemplo, no capítulo 9, ele escreve um "pool de fios".

Não percebi o link Ver também no final da página ))
Entendi,std::thread está em C, masstd::async não está ((

Só estou lendo este livro agora )) Programação paralela C++ em ação, Anthony Williams.
O livro está no anexo,
async começa no capítulo 4, muito fácil de ler.
E Kurt Ganteroth, em seu livro Optimizing C++ Programs, afirma que é 14 vezes mais caro criar linhas do que usar std::async.
É por isso que eu originalmente queria usar async, mas também não sabia muito sobre fios em C/C++,
portanto, seos fios são mais caros, eles caem para uso de qualquer forma.
Mas acontece que em C,std::async does not exist((


 
Roman:

Não percebi o link Ver também no final da página ))
Entendi,std::thread está em C, mas std:: async não está ((

Só estou lendo este livro agora )) Programação paralela C++ em ação, por Anthony Williams.
Se você estiver interessado, o livro está no anexo, async começa no capítulo 4, muito fácil de ler.
E Kurt Ganteroth, em seu livro Optimizing C++ Programs, afirma que é 14 vezes mais caro criar linhas do que usar std::async.
É por isso que eu originalmente queria usar async, mas também não sabia muito sobre fios em C/C++,
Portanto, seos fios são mais caros, não vale a pena usá-los de qualquer forma.
Mas acontece que em C,
std:: async does not exist ((

Uma rosca não é mais cara, é apenas uma ferramenta de nível inferior da qual você pode fazer qualquer coisa. Você pode fazer sua própria piscina de fios simples em "fios caros" - uma hora de escrita (ou tomar uma libra pronta).

criar roscas é 14 vezes mais caro do que usar std::async.

Talvez se houver um pool de fios dentro da assimetria, mas nem sempre é esse o caso https://stackoverflow.com/questions/15666443/which-stdasync-implementations-use-thread-pools.

Como resultado, a async é uma caixa tão preta e incontrolável. Eu não peço que você escreva sua própria piscina, se você se sentir confortável com a assimetria, tudo bem.

ZS: havia rumores de que a async seria removida de c++17.
Which std::async implementations use thread pools?
Which std::async implementations use thread pools?
  • 2013.03.27
  • KnowItAllWannabeKnowItAllWannabe 5,31455 gold badges3434 silver badges7676 bronze badges
  • stackoverflow.com
One of the advantages of using instead of manually creating objects is supposed to be that can use thread pools under the covers to avoid oversubscription problems. But which...
 

O Async pode ser executado de forma síncrona, há uma bandeira para ele. Acho que o "thread pooling" em pluses é complicado e só faz sentido escrevê-lo em caso de extrema necessidade. É melhor você dar uma olhada na Sharp, naquele agrupamento de fios.

Eu também recomendaria "Scott Meyers: Eficiente e Moderno C++". 2016, fácil de ler, como um sucesso de bilheteria. Anexei o arquivo abaixo. Ele tem um capítulo interessante sobre os fios. E em geral, Meyers deve ser lido, porque você tem que )))

 
Andrei Novichkov:

Acho que a junção de fios nos profissionais é complicada e só faz sentido se for absolutamente necessária.

Não torne as coisas mais difíceis do que precisam ser. Se você não quiser escrevê-lo você mesmo, pode facilmente pegar um já pronto, uma busca rápida aqui https://github.com/vit-vit/ctpl. E é algo menos previsível, ao contrário da assimetria (que é freqüentemente criticada).

vit-vit/CTPL
vit-vit/CTPL
  • vit-vit
  • github.com
More specifically, there are some threads dedicated to the pool and a container of jobs. The jobs come to the pool dynamically. A job is fetched and deleted from the container when there is an idle thread. The job is then run on that thread. A thread pool is helpful when you want to minimize time of loading and destroying threads and when you...
 
Vict:

Não torne as coisas mais difíceis do que precisam ser. Se você não quiser escrevê-lo você mesmo, pode facilmente obter um pronto, aqui está uma busca rápida https://github.com/vit-vit/ctpl. E é algo menos previsível, ao contrário da assimetria (que é freqüentemente criticada).

Não, não se sinta como tal )))))) Mas uma busca apressada é também, umm, muito difícil. Encontrei muita porcaria no github. Mas eu estou interessado em outra, há alguma tarefa que realmente exigiria o "thread pooling"? Não apenas criar um fio, esquecê-lo e esperar até que termine, mas apenas juntá-lo como Williams descreve? Parece ser um exemplo de caixa eletrônico, se não estou enganado - que tarefa poderia justificar um judô tão milagroso? Ainda não consigo pensar em tal tarefa. E por que você não olha realmente para o ThreadPool onde tudo já está feito, há documentação e exemplos.