代码之家  ›  专栏  ›  技术社区  ›  TCSGrad

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

  •  3
  • TCSGrad  · 技术社区  · 15 年前

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

    如果我的问题听起来太幼稚,那是因为我以前从来没有做过线程处理,而且根据我过去的经验,我知道这里有人可以让我开始/指向正确的方向,从哪一点开始。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Rick    15 年前

    正如其他人建议您可以使用createthread、beginthread或threadpool API, the process and threads reference is best 对于Win32线程化,您还可以使用与C++0X STD::线程标准非常接近的Booo::线程。

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

    conct中的API是“任务”API,而不是线程API,它让您的抽象级别略高于线程。即平行回路、平行管线和任务组。与boost::thread类似,这些API主要设置为与函数一起使用,而不是与createthread/threadpool样式的API一起使用,尽管有些API在语法上与createthread相似(例如concurrency::scheduler::scheduletask)。

    -里克

        2
  •  4
  •   Greg Hewgill    15 年前

    Windows上的线程不需要任何额外的库,它直接内置在win32 api中。例如,要创建线程,请调用 CreateThread .线程函数的完整列表可以在msdn上的 Process and Thread Functions .

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

        3
  •  2
  •   Naveen    15 年前

    正如@greg所说,您可以使用createthread在Windows上创建线程。另一种选择是使用boost线程,imho为处理它们提供了更好的接口。