“win32的多线程编程”和“C ++ 11的多线程编程”之间的区别

时间:2015-06-24 19:45:46

标签: c++ multithreading

我是C ++编程的新手。我有一个愚蠢的问题。

如果我想编写multi_threading,何时使用“使用C ++ 11进行多线程编程”和“win32的多线程编程”?

在win32中使用man CreateThread(),在c ++ 11中使用man std::thread

2 个答案:

答案 0 :(得分:0)

如果您在Windows下编程,则可以使用两者。如果您希望您的程序可以在其他平台上移植,那么您最好坚持使用c ++ 11。

作为一般规则,如果你正在学习,我会建议你去c ++ 11,因为它与c ++语言更加一致。 Win32线程API是一组C风格的函数,而不是C ++库。

另一方面,使用win32编程可能有正当理由,但这可能会隐藏在您可能不需要的平台特定方面(现在)。

答案 1 :(得分:0)

在C ++ 11之前,标准库中没有办法创建线程。 CreateThread()是一个Windows API函数,因此只能在Windows上运行。

如果你的编译器支持C ++ 11,特别是C ++ 11线程,你通常最好使用std :: thread,因为它可以用于任何支持C ++ 11线程的编译器/操作系统。值得注意的是,C ++ 11线程基本上来自Boost线程,因此如果您遇到不支持它们的情况,您可以下载boost库并更改所有std: :线程调用boost :: thread,它应该仍然可以工作。