2013-01-25 3 views
-2

Une fonction est appelée à partir de deux fichiers diffirent pour charger des données, dans certains cas, elle est chargée à partir d'un fichier et dans certains cas elle est chargée à partir d'autres fichiers. Mais dans les cas de coin, il est appelé à partir des deux fichiers, ce qui devrait être éviter.Exécution d'une seule fonction

Je peux prendre une variable globale ou utiliser une fonction pour m'assurer que le chargement des données se produit une seule fois.

Vous cherchez une solution plus élégante.

Est-ce que linux fournit une API pour y parvenir?

Merci

+1

Vous pouvez utiliser une variable 'static' dans le corps de la fonction pour vous souvenir si elle a été exécutée. Il n'y a pas besoin d'une "API spéciale" pour un problème si chétif. – rburny

+1

vous devez montrer votre code ... –

Répondre

4

Si vous parlez de plusieurs threads, alors vous besoin d'une sorte de mutex autour d'une variable statique qui signifie que la fonction a déjà exécuté ou non.

Si vous n'avez qu'un seul thread, vous n'avez pas besoin du mutex.

0

Si multithread, utilisez un mutex autour d'une variable statique comme suggéré in this answer, ou utilisez peut-être pthread_once.

Questions connexes