代码之家  ›  专栏  ›  技术社区  ›  Matthew Iselin

实际上,通常使用什么pthreads功能?

  •  5
  • Matthew Iselin  · 技术社区  · 15 年前

    我正在操作系统项目的POSIX子系统上工作,我已经达到了我想在pthreads支持上工作的程度。但是,我不确定应该在多大程度上实现它们。

    最常用的pthreads功能是什么?我现在是否有什么可以安全地“仅仅中断”并在移植需要它的应用程序时实现它?到目前为止,我的研究指出了基本的线程操作(创建、连接等),这是非常明显的,以及互斥支持。实际上,应用程序是否比这更有用?

    我想我只是想弄清楚,在实现仍在工作的情况下,我能摆脱的东西有多少。

    2 回复  |  直到 15 年前
        1
  •  7
  •   pilcrow    15 年前

    我建议一个简单的pthread实现包括以下功能(使用 pthread_ “删除的前缀):

    • 基本线程操作
      create , exit , join , detach , self , equal 和“ attr “可接合性/可分离性支持
    • 流程集成
      atfork , kill sigmask
    • 同步原语
      cond mutex 函数(仅限默认属性——没有什么特别的!),可能省略 cond_timedwait

    查看上的susv6条目 <pthread.h> ,我优先链接到susv7,因为版本6有更多的选项组在这个标题中被调用。我通过删除任何可选功能来组成上述列表,然后删除我个人历史和观察建议的其他功能集,这些功能集是不重要的(例如,线程特定的数据),或者是不重要的和危险的(例如,线程取消)。:)

        2
  •  5
  •   anon    15 年前

    您肯定需要支持互斥和条件变量,因为没有它们线程是不可用的,而且它们都被广泛使用。我想你可以在不支持信号量的情况下逃脱(我认为信号量不是pthreads的一部分),但是我不能想象没有信号量就做任何严肃的mt工作。

    看看下一个提议的C++标准可能会很有意思。 support threading 实现它所需要的特性。如果你的操作系统可以支持未来的标准C++程序,它将会是一个相当好的形状。