Oui, la section MFC CCriticalSection est juste un wrapper autour d'un Win32 CRITICAL_SECTION.
Cela vaut pour pratiquement tout MFC, c'est un énorme ensemble de classes wrapper autour des fonctionnalités standard de Win32.
En ce qui concerne votre exemple de code, oui, l'utilisation d'une section critique dans ce contexte n'a pas de sens. Ce que fait une section critique s'apparente à un mutex nommé, elle garantit qu'une ressource ne peut être accessible que par un seul thread à la fois. L'utilisation correcte d'une section critique serait comme un objet accessible par plusieurs threads, puis lors de l'utilisation d'une ressource qui ne peut pas être utilisé par plus d'un fil à la fois:
MyGlobalCS.Lock();
// Do important work on resource
MyGlobalCS.Unlock();
Notez également que s'il est difficile d'obtenir la section critique dans un emplacement partagé, vous pouvez utiliser un mutex nommé à la place.
Vrai, et il vaut la peine de noter que la chose vraiment utile qu'il * pourrait * fournir, RAII, ce n'est pas le cas. Si vous utilisez C++ et MFC, vous devez * vraiment * envisager d'utiliser boost à la place. –
Je dirais "à côté" pas "à la place", boost ne remplace certainement pas la majorité de ce que MFC est visé, ce sont des interfaces graphiques. – DeusAduro