Qual seria um exemplo do mundo real de uso de uma barreira em um aplicativo com vários segmentos?

StackOverflow https://stackoverflow.com/questions/1837283

  •  11-09-2019
  •  | 
  •  

Pergunta

pacote de simultaneidade do JDK, biblioteca de threads do Boost, biblioteca de threads do Perl (e não em Python embora) todos implementar barreira, eu não se deparar com a necessidade de usar uma barreira, por isso, se perguntando o que seria um caso de uso típico estar em multi-threaded aplicações.

Foi útil?

Solução

As barreiras podem ser usados ??em todo o lugar através de exemplos inventados, mas muitas vezes você vai parecer-los em uma dispersão / reduzir método onde os resultados dos diferentes segmentos são todos necessários antes de prosseguir.

Se você quisesse paralelizar uma espécie, por exemplo, você poderia dividir a lista de n vezes e começar n tópicos para classificar a sua seção e pausa, quando eles estão todos terminados eles morreriam deixar o know pai que finalmente é bom para combinar o pedaços ordenados. (Eu sei que existem maneiras melhores mas é uma implementação).

O outro lugar que eu vi é no trabalho em rede paralelizado onde Have para enviar uma certa quantidade de dados por carga útil. Portanto, a interface será iniciado n baldes e esperar que todos eles para preencher antes de enviar a transmissão. Quando você pensa sobre uma linha T1 particionado sorta faz sentido, enviando uma explosão de dados ao longo dos 64 partições multiplexados seria melhor do que o envio de dados 1 da partição (que essencialmente custa o mesmo desde que o pacote tem de ser preenchido com 0 do.)

Hope essas são algumas coisas para você pensar sobre isso o problema!

Outras dicas

Exemplo: um conjunto de fios funcionam concorrentemente para calcular um resultado de jogo e o dito resultado-conjunto (parcial / total) é exigida como entrada para o próximo estágio de processamento para algumas / todas threads ao "barreira".

Uma barreira torna mais fácil para sincronizar vários segmentos sem ter que criar uma solução em torno de múltiplos conditions & mutexes.

Eu não posso dizer que tenho visto barriers muitas vezes embora. Em algum ponto, como o número de threads cresce, pode valer a pena considerar um sistema mais "dissociado", como para gerenciar possíveis dead-locks.

MSDN: Um Barrieris um objecto que impede tarefas individuais em paralelo a partir de uma operação contínua até que todas as tarefas de atingir a barreira. É útil quando uma operação em paralelo ocorre em fases e cada fase requer sincronização entre as tarefas.

Encontrado aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top