Pergunta

estados de documentação QThread::terminate() que está desanimado para terminar um fio chamando essa função.
No meu programa, eu preciso terminar um fio antes de terminar a execução. A thread está realizando alguma computação pesada e eu quero que o usuário tenha controle para cálculo stop.
Como posso fazer isso em vez de chamar QThread::terminate()?

Foi útil?

Solução

Definir uma bandeira de fora do segmento que está marcada pela computação dentro do segmento e parar o cálculo se o sinalizador está definido.

Outras dicas

Usando bandeiras é uma óbvia e a maneira mais comum de fazer o truque, mas se você está trabalhando em um linux / unix plataforma eu aconselho você a usar tubos de vez. Eu tive o mesmo problema em que eu usei uma bandeira (isso torna o threadunsafe código, e os erros decorrentes de tal bandeira um são difíceis de traço), então eu mudei a implementação de tubos de uso, que eram uma forma eficiente de fazer o necessário.

Se você quiser, para uma plataforma linux eu posso mostrar-lhe como usar tubos para terminar uma QThread.

Você também pode ter janelas equivalentes de tubos, que eu não sei muito sobre como eu não tenho feito muito de programação na plataforma Windows.

Espero que isso ajude

Melhor é usar a bandeira + mutex que fará com que o segmento seguro solução.

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