线程在BHO / ATL / COM中。 Winapi还是其他什么?

时间:2010-11-26 12:40:09

标签: c++ multithreading com atl bho

我正在编写IE插件,我正在使用ATL。我需要创建后台工作线程,以便尽快解除阻塞UI线程。 我的问题是,我应该使用创建线程的最低可能方式,即Winapi,CreateThread等。

或者是否有其他提供的方法在BHO / ATL / COM项目中创建工作线程?

我必须先学习这些东西,所以我想先问一下;)

3 个答案:

答案 0 :(得分:2)

除非您需要提供的控制级别,否则无需使用低级API。

使用ATL,您已经拥有CWorkerThread,但如果您愿意,也可以使用其他库,例如Boost.Thread

答案 1 :(得分:1)

如果您要一直到API,那么如果您的线程将使用CRT,那么_beginthreadex优先于CreateThread()。 (如果你不知道,可能会这样)

答案 2 :(得分:0)

通常,您可以使用boost :: thread,Visual Studio ConCRT或Intel TBB,具体取决于您的线程需求的极端程度。对于最简单的用途,选择boost :: thread。对于更高级的用途,请选择ConCRT或TBB。除非您非常渴望获得其他库中未提供的某些功能,否则请勿使用WinAPI。简单的事实是,如果你用C ++编写一个库,那么将WinAPI用于线程就像回到汇编程序来编写你的程序一样。留在C ++中 - 使用Boost。