次の方法で共有


AfxBeginThread

この関数を呼び出して、新しいスレッドを作成します。

CWinThread* AfxBeginThread( 
   AFX_THREADPROC pfnThreadProc, 
   LPVOID pParam, 
   int nPriority = THREAD_PRIORITY_NORMAL, 
   UINT nStackSize = 0, 
   DWORD dwCreateFlags = 0, 
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL  
); 
CWinThread* AfxBeginThread( 
   CRuntimeClass* pThreadClass, 
   int nPriority = THREAD_PRIORITY_NORMAL, 
   UINT nStackSize = 0, 
   DWORD dwCreateFlags = 0, 
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL  
);

パラメーター

  • pfnThreadProc
    ワーカー スレッドの制御関数をポイントします。 NULL にすることはできません。 この関数は次のように宣言する必要があります。

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    CWinThread から派生したオブジェクトの RUNTIME_CLASS

  • pParam
    pfnThreadProc の関数の宣言へのパラメーターに示されるように、制御関数に渡すパラメーター。

  • nPriority
    スレッドの優先順位。 使用可能な優先順位の詳細な一覧と説明については、Windows SDK の SetThreadPriority を参照してください。

  • nStackSize
    新しいスレッドへのスタックのバイト サイズを指定します。 0 である場合、スタック サイズの既定値は、このスレッドを生成するスレッドのスタックと同じサイズです。

  • dwCreateFlags
    スレッドの作成を制御する追加のフラグを指定します。 このフラグは、2 つの値の 1 つを含めることができます。

    • CREATE_SUSPENDED 中断カウントを 1 としてスレッドを開始します。 スレッドが実行を開始する前に m_bAutoDelete などのような CWinThread オブジェクトのメンバー データまたは派生クラスのメンバーを初期化する場合は、CREATE_SUSPENDED を使用します。 初期化が完了したら、CWinThread::ResumeThread を使用して、スレッドの実行を開始します。 CWinThread::ResumeThread が呼び出されるまでは、スレッドは実行されません。

    • 0 作成直後にスレッドを開始します。

  • lpSecurityAttrs
    スレッドのセキュリティ属性を指定する SECURITY_ATTRIBUTES 構造体をポイントします。 NULL である場合、スレッドの作成と同じセキュリティ属性が使用されます。 この構造体の詳細については、Windows SDK を参照してください。

戻り値

エラーが発生した場合、新しく作成されたスレッドのオブジェクトまたは NULL をポイントします。

解説

AfxBeginThread の最初のフォームはワーカー スレッドを作成します。 2 番目のフォームは、ユーザー インターフェイス スレッドまたはワーカー スレッドとして機能可能なスレッドを作成します。

AfxBeginThread は、新しい CWinThread オブジェクトを作成し、CreateThread 関数を呼び出してスレッドの実行を開始し、スレッドへのポインターを返します。 なんらかの原因でスレッド生成に失敗すると、スレッド生成処理全体をチェックし、すべてのオブジェクトを確実に解放します。 スレッドを終了するには、スレッド内から AfxEndThread を呼び出すか、またはワーカー スレッドの制御関数から戻ります。

マルチスレッドは、アプリケーションによって有効化される必要があります。それ以外の場合、この関数は失敗します。 マルチスレッドを有効にする方法の詳細については、Visual C++ コンパイラ オプションの「/MD、/MT、/LD (ランタイム ライブラリの使用)」を参照してください。

AfxBeginThread の詳細については、「マルチスレッド: ワーカー スレッドの作成」および「マルチスレッド: ユーザー インターフェイス スレッドの作成」の記事を参照してください。

使用例

CSocket::Attach の例を参照してください。

必要条件

ヘッダー: afxwin.h

参照

関連項目

AfxGetThread

概念

MFC マクロとグローバル