2011-02-17 2 views
0

Quels sont les fils de discussion? Comment les mettre en œuvre? Et quand les utiliser. Je demande cela parce que beaucoup de gens les mentionnent mais je ne trouve pas un exemple net d'entre eux. Ou est juste un dicton pour créer des discussions? Merci.Que sont les fils de travail?

+2

Peut-être qu'ils parlent de threads de travail, qui sont sujets à accomplir des tâches en arrière-plan . – sashoalm

+0

pouvez-vous donner un exemple dans le contexte de la façon dont les gens les mentionnent, ou peut-être un lien s'il vous plaît. – andrewjs

+0

Avez-vous fait des efforts pour jeter un oeil à ces réponses? –

Répondre

0

Les threads de travail n'est pas un terme significatif dans le monde des threads. Je suppose que vous voulez dire, "What are worker threads"?

Dans ce cas, laissez-moi vous dire qu'un worker thread est couramment utilisé pour gérer les tâches en arrière-plan que l'utilisateur ne devrait pas avoir à attendre pour continuer à utiliser votre application.
e.g Recalcul et impression d'arrière-plan.

Pour la mise en œuvre du thread de travail, la fonction de contrôle qui définit le thread doit être définie. Lorsque cette fonction est entrée, le thread démarre, et quand il se termine, le thread se termine. Cette fonction doit avoir le prototype suivant: More Information

UINT MyControllingFunction(LPVOID pParam); 

Un court extrait pour implémenter la fonction de contrôle du thread de travail,

UINT MyThreadProc(LPVOID pParam) 
{ 
    CMyObject* pObject = (CMyObject*)pParam; 

    if (pObject == NULL || 
     !pObject->IsKindOf(RUNTIME_CLASS(CMyObject))) 
    return 1; // if pObject is not valid 

    // do something with 'pObject' 

    return 0; // thread completed successfully 
} 

// inside a different function in the program 
. 
. 
. 
pNewObject = new CMyObject; 
AfxBeginThread(MyThreadProc, pNewObject); 
. 
. 
. 
0

"Fil de travail" est un terme générique pour un thread qui effectue une tâche indépendante de certains threads primaires. Selon l'utilisation, il peut simplement signifier n'importe quel thread autre que le thread d'interface utilisateur principal, ou il peut signifier un thread qui effectue une tâche bien définie (c'est-à-dire un 'job' plutôt qu'une opération continue qui dure la vie de l'application). Par exemple, vous pouvez générer un thread de travail pour extraire un fichier d'un ordinateur distant sur un réseau, par exemple. Il peut envoyer des mises à jour de progression du thread principal de l'application.

J'utilise un worker, ou un thread d'arrière-plan, chaque fois que je veux effectuer une longue tâche sans attacher mon interface utilisateur. Les threads me permettent souvent de simplifier mon code en faisant une série continue d'instructions, plutôt qu'une architecture alambiquée et non bloquante.