是什么让 pthread 成为“主”线程?

问题描述 投票:0回答:1

是什么让 pthread 成为“主线程”?

我问这个问题是因为某些 GLFW 函数只能从主线程调用。我了解线程安全的概念。但是主线程有什么特别之处呢?为什么我不能从非主线程运行所有 GLFW 函数?

pthreads glfw
1个回答
0
投票

是什么让 pthread 成为“主线程”?

在 POSIX 环境(您可以找到 pthreads)中,该术语通常表示程序的 initial 线程,其中(第一次)进入

main()
发生。这就是 GLFW 文档如何使用它

但是主线程有什么特别之处呢?

Pthreads 本身并不专门区分程序的初始线程。对

main()
的初始调用的特点是从该调用返回会终止整个程序,但这不是 GLFW 感兴趣的。文档解释:

由于一个或多个平台的限制,窗口、光标以及OpenGL和OpenGL ES上下文的初始化、终止、事件处理以及创建和销毁都仅限于主线程。

(已添加强调)

看起来

GLFW的“一个或多个平台”主要是指MacOS,尽管Windows和X11在这方面各有各的特点。 GLFW 说“管他的。它在任何地方都可以将大多数操作限制在主线程中,所以这就是我们所需要的。”这使他们和您(应用程序程序员)变得更容易。

为什么我不能从非主线程运行所有 GLFW 函数?

因为 GLFW 的目标是跨平台,而这在 MacOS 上不起作用。如果您的意思是为什么不能从任意线程调用 GLFW 函数,那么通常这在 Windows 上也不起作用。如果你的意思是你想指定一个特定的线程来执行所有 GLFW 操作,那么原则上在 Windows 和 Unix 上都可以完成,但是为什么不选择主线程呢?将 GUI 事件循环放在主线程中是相当标准的。

© www.soinside.com 2019 - 2024. All rights reserved.