我正在编写IE插件,我正在使用ATL。我需要创建后台工作线程,以便尽快解除阻塞UI线程。 我的问题是,我应该使用创建线程的最低可能方式,即Winapi,CreateThread等。
或者是否有其他提供的方法在BHO / ATL / COM项目中创建工作线程?
我必须先学习这些东西,所以我想先问一下;)
答案 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。