Pergunta

Eu tenho uma lista de itens que eu preciso atualização em intervalos diferentes. A lista pode crescer para ser milhares de itens longa. Cada item pode potencialmente ter um intervalo diferente. Se eu criar um temporizador por item, eu vou saturar o sistema com fios? Eu estava pensando que poderia ser melhor para criar um temporizador igual ao menor intervalo no conjunto de itens, e em seguida, em cada incremento atualização um contador, e em seguida, verifique se o contador agora é igual a todos os outros intervalos. Isso deve funcionar, desde que o menor intervalo é um múltiplo de todos os outros intervalos. Alguma sugestão?

Foi útil?

Solução

Aumento não usa um thread por timer, ele mantém uma fila de temporizador. Cada temporizador é criado com objeto boost::asio::io_service que faz o trabalho real.

Este objeto pode despachar seu trabalho em um ou mais segmentos, quando você executar boost::asio::io_service::run() explicitamente de vários segmentos , mas não há correspondência de um-para-um entre temporizadores e tópicos, e Asio não irá criar tópicos atrás das costas.

Outras dicas

versões recentes do Asio, Boost 1,43 e, mais tarde, utilize o timerfd_create(2) API no Linux para deadline_timers.

alterado para usar timerfd para a expedição temporizadores no Linux, quando disponíveis.

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