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

时间:2009-08-19 07:44:28

标签: posix pthreads

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

最常用的pthreads功能是什么?有什么东西我现在可以安全地“存根”并在我们移植需要它的应用程序时实现它吗?到目前为止,我的研究指出了基本的线程操作(创建,连接等等) - 这是非常明显的 - 以及互斥支持。实际上,应用程序使用的远不止这些吗?

我想我只是想弄清楚我还有多少可以逃脱,同时仍然有一个有效的实施。

2 个答案:

答案 0 :(得分:7)

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

  • 基本线程操作
    createexitjoindetachself,{{1 }}和“equal”支持可加入性/可拆卸性
  • 流程整合
    attratforkkill
  • 同步原语
    sigmaskcond个函数(仅限默认属性 - 没什么特别的!),可能省略mutex

查看<pthread.h>上的SUSv6条目,我优先链接到SUSv7,因为版本6在此标题中有更多选项组。我通过敲击任何可选功能组成上面的列表,然后删除我的个人历史和观察所暗示的非必要的其他功能集(例如,线程特定数据)或者非必要和危险(例如,线程取消)。 :)

答案 1 :(得分:5)

您肯定需要支持互斥锁和条件变量,因为如果没有它们,线程将无法使用,并且它们都被广泛使用。我想你可以在没有支持信号量的情况下离开(我认为这不是pthreads的一部分),但是如果没有它们,我无法想象做任何严肃的MT工作。

查看下一个提出的support threading C ++标准并实现其所需的功能可能会很有趣。如果您的操作系统可以支持未来的标准C ++程序,那么它的状态会非常好。