Go: Concorrência e ordem de prioridade

atp:

Tenho n ~ = 1000 trabalhos em execução em servidores externos, cada um vinculado a uma rotina go em meu programa. Comecei os trabalhos em momentos diferentes, e eles terminam mais ou menos na ordem em que foram iniciados, mas isso não é garantido.

A partir de cada go-rotina, pesquiso seu trabalho de servidor correspondente: já está feito? Minhas solicitações de saída são limitadas por taxa, então preciso pesquisar com inteligência.

Quero priorizar a votação por rotinas go cujos trabalhos foram iniciados anteriormente. Do jeito que estou fazendo agora, tenho um canal que representa meu limite de taxa e todas as rotinas go esperam para adquirir um valor desse canal, sondar seu servidor e, em seguida, colocar um valor de volta.

Porém, não há garantia de que essas rotinas go seriam lidas aleatoriamente (muito menos em ordem de prioridade), porque o comportamento de várias rotinas go lendo no mesmo canal é indefinido.

Alguém poderia me orientar sobre como pensar sobre esse problema? Não precisa ser específico, mas não tenho certeza de quais primitivas e estruturas de dados eu usaria em Go para ler canais em ordem de prioridade, levando em consideração a limitação de taxa.

Parece difícil porque goroutines individuais não sabem o estado de todo o programa - quais rotinas de seus colegas foram iniciadas primeiro, etc. Eles devem meramente ser alimentados se devem ou não consultar seu servidor a qualquer momento.

Obrigado.

Rob:

Você já ouviu falar de Filas justas ponderadas? Essa é uma maneira bem desenvolvida de agendar, de forma que uma previsão seja feita sobre qual trabalho deveria teoricamente ser concluído primeiro, e esse é aquele que é atendido.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Go: Concorrência e ordem de prioridade

Mapas Go falham no teste de concorrência

Mapas Go falham no teste de concorrência

Concorrência de leitura e gravação

Regexp encontrou uma correspondência com a ordem de prioridade?

Como executar alguns conjuntos de teste com concorrência e resto sem concorrência usando TestCafe?

A fila de operações não está sendo executada em ordem, mesmo depois de definir a prioridade e a dependência das operações

Concorrência e estruturas de dados simultâneas

Concorrência CoreData e objetos de liberação

NgRx - Redutores de prioridade e ordem de execução em relação à loja

Ordem inversa da fila de prioridade

Reorganização de código no Intellij IDEA (Android Studio) em ordem alfabética e prioridade

Reorganização de código no Intellij IDEA (Android Studio) em ordem alfabética e prioridade

Classificar dicionário por chave: prioridade de chave única e ordem alfabética

Diferença na ordem com o mesmo comparador na fila de prioridade e vetor

Prioridade HTTP / 2 e teste de dependência com Jetty

ordem do servidor sql por data e prioridade

TFS 2017 - Criar prioridade e ordem dos agentes

Fila de prioridade e heap

Ordem de precedência entre || e && - java

Como dar ordem de prioridade ao cucumber.io 5.6.0 após ganchos e uma tag específica

ORDEM do MySQL de strings alfanuméricas, prioridade para números e caracteres não numéricos à direita

Classifique a lista por prioridade e, em seguida, inverta a ordem dos elementos com a mesma prioridade

HDF5 - concorrência, compressão e desempenho de E / S

configuração da ordem na fila de bloqueio de prioridade

Concorrência complexa em JavaFX: usando ObservableLists e propriedades de vários threads de trabalho

Diferença de aipo entre concorrência, trabalhadores e dimensionamento automático

Concorrência Java - pool de threads - várias solicitações e usuários

Os incrementos com gatilhos Postgres atômicos e de alta concorrência são seguros?