我正在研究我的操作系统项目的POSIX子系统,我已经达到了我想要在pthreads支持上工作的程度。但是,我不确定我应该在多大程度上实施它们。
最常用的pthreads功能是什么?有什么东西我现在可以安全地“存根”并在我们移植需要它的应用程序时实现它吗?到目前为止,我的研究指出了基本的线程操作(创建,连接等等) - 这是非常明显的 - 以及互斥支持。实际上,应用程序使用的远不止这些吗?
我想我只是想弄清楚我还有多少可以逃脱,同时仍然有一个有效的实施。
答案 0 :(得分:7)
我建议一个简单的pthread实现包含以下功能(删除了“pthread_
”前缀):
create
,exit
,join
,detach
,self
,{{1 }}和“equal
”支持可加入性/可拆卸性attr
,atfork
和kill
sigmask
和cond
个函数(仅限默认属性 - 没什么特别的!),可能省略mutex
查看<pthread.h>
上的SUSv6条目,我优先链接到SUSv7,因为版本6在此标题中有更多选项组。我通过敲击任何可选功能组成上面的列表,然后删除我的个人历史和观察所暗示的非必要的其他功能集(例如,线程特定数据)或者非必要和危险(例如,线程取消)。 :)
答案 1 :(得分:5)
您肯定需要支持互斥锁和条件变量,因为如果没有它们,线程将无法使用,并且它们都被广泛使用。我想你可以在没有支持信号量的情况下离开(我认为这不是pthreads的一部分),但是如果没有它们,我无法想象做任何严肃的MT工作。
查看下一个提出的support threading C ++标准并实现其所需的功能可能会很有趣。如果您的操作系统可以支持未来的标准C ++程序,那么它的状态会非常好。