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

Visual C++中的线程

  •  10
  • Jacob  · 技术社区  · 14 年前

    我正在windows中尝试多线程,想知道是否应该

    如果我尝试在不同的平台上开发这样的应用程序,学习pthread会很有用,但是如果不学习win32 api,我会失去什么吗?或者两者都很相似,所以学习一个可以让我很容易地找出另一个?

    5 回复  |  直到 14 年前
        1
  •  7
  •   tony    14 年前
    1. 使用增压螺纹。当C++ 0x出现时,我们将有STD::线程。boost线程具有最接近std线程的实现。

    2. 否则使用pthreads。与STD最接近的是:线程,并构成STD线程和增强线程的主要基础。

    3. 否则直接执行windows线程。你仍然可以学习线程是如何工作的,并形成事物的心理模型。它只是倾向于使用有点不标准的同步原语。

        2
  •  1
  •   JSBÕ±Õ¸Õ£Õ¹    14 年前

    如果你要做很多windows编程,学习基本的win32线程结构是值得的:关键部分,互锁函数, CreateThread , WaitFor*Object 等等,这些并不难理解,它们可以透明地转换为其他线程框架中的等效对象。

    但是,对于更高级的线程结构,如信号量、事件等,我将使用 pthreads 图书馆,因为关于这些的文档往往更清晰,例子也更丰富。

        3
  •  1
  •   Patrick    14 年前

    如果你使用C/C++,尝试使用C/C++运行时的线程函数。 如果使用win32(或其他非crt函数创建线程),则crt可能无法在新线程中正确初始化,从而导致各种问题(您可以在此处阅读: http://www.codeguru.com/forum/archive/index.php/t-371305.html )

    但是,大多数线程函数(在crt、win32或pthread中)都基于创建线程、同步线程和销毁线程的功能。实际上,这并不总是那么容易使用。

    在过去的一年里,有一种趋势是基于任务的线程(好吧,我这样称呼它,我不知道官方名称是什么)。在基于任务的线程中,您创建一个任务,然后要求“线程逻辑”执行该任务,而不是先启动一个线程,然后在其中执行一些逻辑。

    支持这种新的线程工作方式的系统有:

    • visual studio 2010(我们得等几天)
    • 英特尔线程构件

    visual studio 2010甚至(看起来)有特殊的调试逻辑来调试“并行任务”。

        5
  •  0
  •   Sniggerfardimungus    14 年前

    我发现坚持使用pthreads可以在三个方面拯救我的理智:

    • 我不需要战斗到底 WinAPI文档,它不是习惯性的 任何品质的。
    • 任何用线做很多事情的人 能帮上忙 p螺纹。我在网上找到了更多关于pthreads的信息。
    • 每当我实现更多 复杂的“你好世界” WinAPI,我发现它需要很长的时间 比合理的时间长 期待。那只是我的经验 不过,输入。

    就功能而言,我从来没有发现pthread缺少任何东西,所以我认为我从来没有发现需要寻找其他地方。对于学习一个你可以在任何环境中使用的库,还有很多话要说。