2010-11-27 29 views
0

Supposons que nous ayons une fonction qui n'interfère pas avec d'autres données et s'exécute de manière indépendante. Cependant, j'ai entendu une méthode pour le faire est de faire l'ensemble de l'application dans une section et que seule une section. Peut-il être fait à la place avec l'application principale l'engendrant dans un fil et s'assurer que l'application principale n'attendra pas pour qu'elle se termine?Une fonction peut-elle fonctionner indépendamment dans une application principale? [OpenMP]

par exemple. pseudo code:

int main (void) { 
    <do stuff on thread 0> 
    <do stuff on thread 0> 

    <spawn independent function on thread 1 with no waiting> 

    <do stuff on thread 0> 
    <do stuff on thread 0> 
} 

EDIT: Peut-il être fait avec une autre philosophie complètement? (pas OpenMP)

+0

fil 0 n'attendra pas votre fonction sur fil 1 à remplir en standard. Cela prendrait plus de travail pour vous faire attendre. – Hannesh

+0

Vous décrivez le comportement des threads ... – Falmarri

Répondre

2

Ce n'est pas l'objectif principal d'OpenMP: il a été conçu pour le traitement parallèle, et non pour la programmation simultanée. Vérifiez votre bibliothèque de threads locale et recherchez quelque chose appelé "threads daemon", "threads détachés" ou similaire.

+0

TY. Pour mes besoins, le threading SDL semble être une excellente façon multiplateforme de le faire avec un minimum de moyens. –

1

Si vous parlez de fils détachés, alors la réponse est oui. Le thread s'exécute, puis quitte sans avoir à être attendu. Vous perdez la possibilité d'obtenir un statut de retour du thread.

poste Larsmans souligne pourquoi vous ne voulez probablement pas utiliser le filetage