【问题标题】:Basic multi-threading in C / C++ -- hints, advice, tutorial, some direction? [closed]C/C++ 中的基本多线程——提示、建议、教程、方向? [关闭]
【发布时间】:2010-08-04 05:44:44
【问题描述】:

我想学习如何构建多线程应用程序,但我什至不知道从哪里开始。

大多数人如何实现多线程?他们使用 boost 库吗?还有其他方法吗? (使用标准 C/C++)

我理解这个概念,但完全不知道从哪里开始真正学习如何去做。谁能推荐点什么?

http://msdn.microsoft.com/en-us/library/7t9ha0zh%28v=VS.80%29.aspx

我对多线程库包含在 Windows API 中的说法是否正确? 我在 MSDN 上找到了一个示例( http://msdn.microsoft.com/en-us/library/esszf9hw%28v=VS.80%29.aspx) 及其使用的函数(ReleaseMutex 等)似乎在 windows.h 中。这是大多数人在进行 Windows 编程时使用的吗?

【问题讨论】:

  • 没有标准的 C/C++ 线程。提升线程是下一个最好的东西stackoverflow.com/questions/415994/boost-thread-tutorials。如果你想走这条路,C++0x 确实有线程。
  • 前几天我在做一些阅读,似乎微软的托管 C++ 严重偏离了 C++ 标准,这可能会欺骗你。请注意,MSDN 文档不是在谈论托管 C++,也不是真正的标准化 C++。
  • 随意看看我过度使用多线程的俄罗斯方块项目(主要是为了自学):code.google.com/p/tetris-challenge

标签: c++ c multithreading


【解决方案1】:

Boost 库是一种使用线程的跨平台方式。

大多数人使用winapipthreads。 pthreads 最初是在 POSIX 系统上使用的,但它有一个用于 mingw 的端口,也允许它在 Windows 上使用。

如果您绝对需要跨平台解决方案,或者已经链接了 boost 库,我建议您使用 boost。如果你是为 windows 或 POSIX 开发,请相应使用 winapi 或 pthreads。

【讨论】:

  • 只需使用 boost - Boost.Thread 和 Boost.Bind 是本周我最喜欢的两个朋友。
  • 我也将winpthreads 与 MSVC 一起使用。
【解决方案2】:

如果您希望通过多线程在您的应用程序中获得简单的性能提升,OpenMP 是一个简单的库,它允许您的程序跨多个内核扩展,只需在代码中放置 #pragma 即可并行化代码或循环,以及用于削弱特定性能的附加选项。

这并不容易实现粗略的并行性,例如应用程序中的 GUI/处理/IO 划分,但确实允许在多核机器上进行大量的数字运算,从而轻松提升多线程性能。

【讨论】:

    【解决方案3】:

    如果您以前从未处理过多线程,我建议您通过类似this one on codeproject 的教程开始学习。

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2010-12-14
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多