Pergunta

Um objeto QTHread representa um único thread de execução. Mas é o segmento do sistema operacional criado quando o objeto Qthread é criado, ou quando o start() O método é chamado?

Estou interessado em saber se posso ter vários objetos Qthread por aí, e o sistema operacional criará threads start() e matá -los depois run() Retorna e, em seguida, posso reutilizar os objetos Qthread novamente. Mas não quero manter os recursos do sistema operacional enquanto os objetos Qthread não estão fazendo nada.

(Para constar, estou ciente de QtConcurrent e do Qthreadpool, e não, eles não satisfazem minhas necessidades nessa situação)

Foi útil?

Solução

No Linux, o objeto Thread é criado (via pthread_create) durante o QThread::start método. Parece o mesmo com o Windows.

Você pode ver a fonte aqui:

Unix: http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_unix.cpp (linha 542).

Janelas: http://qt.gitorious.org/qt/qt/blobs/master/src/corelib/thread/qthread_win.cpp (linha 419).

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