Linux多线程将涉及pthreads库(在大多数情况下)。 MSVC使用的等效库是什么?

时间:2009-12-12 02:23:19

标签: c++ c visual-studio multithreading

我需要知道哪些是MSVC用于多线程的API /库。如果有多个,请告诉我哪个使用最广泛。

如果我的问题听起来太天真,那是因为我之前从未做过线程,而且根据我过去的经验,我知道这里有人可以让我开始/指向正确的方向,从那时我可以启动。

3 个答案:

答案 0 :(得分:4)

Windows上的线程不需要任何额外的库,它内置于Win32 API中。例如,要创建一个线程,请调用CreateThread。完整的线程功能列表可以在MSDN上的Process and Thread Functions找到。

请注意,如果您正在编写使用MSVCRT的程序,则可能需要调用_beginthread()系列函数。这样做有助于设置和拆除用于支持MSVCRT库线程化的其他数据结构。

答案 1 :(得分:2)

正如@Greg所说,你可以使用CreateThread在Windows上创建一个线程。其他选择是使用增强线程,IMHO提供了更好的接口来处理它们。

答案 2 :(得分:2)

正如其他人建议您可以使用CreateThread或_beginthread或线程池API,the process and threads reference is best进行Win32线程,您也可以使用非常接近C ++ 0x std :: thread标准的boost :: thread

如果您使用Visual Studio,另一个选项是查看并行模式库和异步代理库,它们是Microsoft Concurrency Runtime(ConcRT)的一部分,是Visual Studio 2010中的新增功能。几个如何帮助链接中的主题可以帮助您在这里开始。

ConcRT中的API是“任务”API而不是线程API,让您的工作抽象级别略高于线程。即并行循环,并行管道和任务组。与boost :: thread一样,API主要设置为使用仿函数而不是CreateThread / ThreadPool样式API,尽管有些API在语法上与CreateThread类似(例如Concurrency :: Scheduler :: ScheduleTask)。

-Rick