我需要知道哪些是MSVC用于多线程的API /库。如果有多个,请告诉我哪个使用最广泛。
如果我的问题听起来太天真,那是因为我之前从未做过线程,而且根据我过去的经验,我知道这里有人可以让我开始/指向正确的方向,从那时我可以启动。
答案 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