2009-04-07 6 views
1

J'ai un objet CFile auquel plusieurs threads peuvent accéder. Il est possible qu'un thread écrit des données dans ce fichier alors qu'un autre thread lit les données du fichier. Je veux savoir s'il y a des risques dans le cadre de cette politique? Le pointeur de fichier peut-il changer avant la fin du processus d'écriture ou de lecture? Est-ce que la réponse est oui, comment éviter l'imprécision du multithread qui peut lire ou écrire en même temps?Changement de pointeur de fichier au cours du processus d'écriture ou de lecture d'un objet CFile

Merci beaucoup!

Répondre

1

CFile Les objets ne sont pas thread-safe. Si vous devez y accéder à partir de plusieurs threads, vous devrez effectuer votre propre synchronisation.

De http://msdn.microsoft.com/en-us/library/aa270950.aspx:

Accès aux objets de plusieurs threads

Pour la taille et des raisons de performance, les objets MFC ne sont pas thread-safe au niveau de l'objet , seulement au niveau de la classe. Cela signifie que vous pouvez avoir deux threads distincts manipulant deux objets CString différents, mais pas deux threads manipulant le même objet CString . Si vous devez absolument avoir plusieurs threads manipulant le même objet , protégez un tel accès avec mécanismes de synchronisation Win32 appropriés , tels que les sections critiques. Pour plus d'informations sur les sections critiques et autres objets connexes, voir dans le SDK Win32.

La bibliothèque de classes utilise des sections critiques en interne pour protéger les structures de données globales , tels que ceux utilisés par l'allocation de mémoire de débogage.

Questions connexes