Sdílet prostřednictvím


Může knihovna MFC DLL vytvořit více vláken?

S výjimkou během inicializace může knihovna MFC DLL bezpečně vytvořit více vláken pokud používá funkce místního úložného prostoru vlákna (TLS) systému Win32 jako například TlsAlloc pro přidělení místního úložného prostoru vlákna. Pokud však knihovna MFC DLL používá __declspec(thread) pro přidělení místního úložného prostoru vlákna, klientská aplikace musí být implicitně propojena s knihovnou DLL. Pokud klientská aplikace explicitně odkazuje na knihovnu DLL, volání LoadLibrary nenačte úspěšně knihovnu DLL. Další informace o vytváření více vláken uvnitř knihovny MFC DLL naleznete v článku znalostní báze "PRB: Volání LoadLibrary() pro načtení knihovny DLL, která má statický protokol TLS" (Q118816).

MFC DLL, která vytvoří nový podproces MFC během spouštění reagovat při načtení aplikace. Jedná se vždy o případ, kdy je vlákno vytvořeno voláním AfxBeginThread nebo CWinThread::CreateThread uvnitř:

  • InitInstance odvozeného objektu CWinApp v běžné knihovně DLL.

  • DllMain nebo funkce RawDllMain v běžné knihovně DLL.

  • DllMain nebo funkce RawDllMain v rozšiřující knihovně DLL.

Další informace o vytváření vláken během inicializace naleznete v článku znalostní báze "PRB: Nelze vytvořit vlákno knihovny MFC při spouštění knihovny DLL" (Q142243).

Viz také

Koncepty

Časté otázky týkající se DLL