ATL で、スレッド プール アパートメント モデル COM サーバーを実装する方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

244495
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
Microsoft Active Template Library (ATL) では、独自のスレッドで実行されている作成したオブジェクトごとに、ATL プロセス サーバー外での STA スレッド プールを定義できます。 これをこの資料の「関連情報」の手順に示します。
詳細
スレッド プール外のオブジェクトを作成するには、次の手順が必要です。
  1. CExeModule または CServiceModule クラスから派生させます:
    CComAutoThreadModule<>					
    CExeModule : public CComAutoThreadModule<>					
  2. DECLARE_CLASSFACTORY_AUTO_THREAD() が STA プール スレッドで実行できる各 ATL クラスで宣言します。
  3. DECLARE_NOT_AGGREGATABLE()
    DECLARE_NOT_AGGREGATABLE(CMyPooledObject)					
  4. モジュール CExeModule::Unlock() または CServiceModule::Unlock() メソッドを呼び出す変更:
    CComAutoThreadModule<>::Unlock()						
    LONG CExeModule::Unlock(){   LONG l = CComAutoThreadModule<>::Unlock();   if (l == 0)   {     bActivity = true;     SetEvent(hEventShutdown); // tell monitor that we transitioned to zero   }   return l;}						
このサービスの実行中は場合、1 つの複数手順を実行させます。 次のコード変更:
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid){   CComModule::Init(p, h, plibid);				
に:
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid){   CComAutoThreadModule<>::Init(p, h, plibid);				
ATL 既定では、プロセッサごとの 4 つのスレッドのプールを作成します。 変更できますこの tWinMain() 関数呼び出しで、_Module.Init() の呼び出しなど、オプションでスレッドの数を指定してパラメーター。 既定では、CComAutoThreadModule は、スレッドのアロケーターとして CComSimpleThreadAllocator を使用します。 CComSimpleThreadAllocator では、スレッド プール内のオブジェクトを作成するには、単純なラウンドロビン スキームを使用します。
関連情報
複数の情報のルックアップ DECLARE_CLASS_FACTORY_AUTO_THREAD() および CComAutoThreadModule と、Microsoft の開発者向けのネットワーク (MSDN)。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください:
202128[FIX ATL EXE サーバーが CComAutoThreadModule に基づく場合があります登録でハング

警告: この資料は、自動翻訳されています

プロパティ

文書番号:244495 - 最終更新日: 01/10/2015 12:14:39 - リビジョン: 3.0

  • Microsoft ActiveX Template Library 3.0
  • kbnosurvey kbarchive kbhowto kbthread kbservice kbarchitecture kblocalsvr kbmt KB244495 KbMtja
フィードバック