2010-11-26 19 views
2

私はIEのアドオンを書くと私はそれのためのATLを使用しています。バックグラウンドワーカースレッドを作成して、UIスレッドができるだけ早くブロック解除されるようにする必要があります。 私はWinapi、CreateThreadなどのスレッドを作成する最も可能な方法を使用する必要がありますBHO/ATL/COMでのスレッド化。 Winapiまたは何か他の?

またはBHO/ATL/COMプロジェクトでワーカースレッドを作成する他の方法がありますか?

私は私が最初に尋ねるだろうと思ったので、最初にこのようなものを学ばなければならない。

答えて

2

低レベルのAPIを使用する必要はありません。

あなたは既にCWorkerThreadを持っていますが、好きな場合はBoost.Threadのような他のライブラリを使うこともできます。

+0

ありがとうございます。私はそれが私が探しているものだと思う。私はすでに何かがある場合、この単純なタスクのために余分なライブラリを追加したくありません。私はこのCWorkerThreadを使用しようとしましたが、まだ方法はわかりません。あなたは私の他の質問をここで見ることができます:http://stackoverflow.com/questions/4294629? –

0

通常)、あなたはブースト::スレッドを使用することになり、Visual StudioのConCRT、またはIntel TBB、どのように極端なあなたのスレッドのニーズに応じて、あります。最も単純な用途のために、boost :: threadを選んでください。より高度な用途には、ConCRTまたはTBBを選択します。あなたが他のライブラリで提供されていない機能のために真剣に必要な場合を除き、WinAPIを使用しないでください。シンプルな事実は、C++でライブラリを書くと、スレッドにWinAPIを使うことは、プログラムを書くためにアセンブラに戻ることと同じです。 C++での滞在 - Boostを使用する

+0

API hateradeに同意しないでください。私はいつもAPIを使用しています。薄く、シンプルで簡単。 –

+0

@ John: "シンプル"と "簡単"は、私が以前にWin32 APIを記述するのに聞いたことのない2つの言葉です。ここでも同じことを話していますか?つまり、時には文書化されていない、時には矛盾していて奇妙な落とし穴や注意書き、コーナーケースでいっぱいです。 – jalf

+0

@ John Dibling:WinAPIだけでAPIには何も問題はありません。それは古く、Cのために意図されています。非常に優れたboost :: threadよりもそれを使う理由はありません。 – Puppy

1

APIに完全に移行する場合は、スレッドがCRTを使用する場合は、_beginthreadexがCreateThread()よりも優先されます。 (あなたがわからない場合は、おそらく)

+1

この問題は長い間前に修正されましたが、CreateThreadは正常に動作します。 crtソースコードの_getptd()。 –

関連する問題