5

私は自分のオペレーティング システム プロジェクトの POSIX サブシステムに取り組んでおり、pthreads サポートに取り組みたいところまで来ました。ただし、それらをどの程度実装する必要があるかについては確信が持てません。

最も使用されている pthreads 機能は何ですか? 今のところ安全に「スタブアウト」して、それを必要とするアプリケーションを移植するときに実装できるものはありますか? これまでの私の調査では、基本的なスレッド操作 (作成、結合など) (これは明らかです) とミューテックスのサポートを示しています。現実的に言えば、アプリケーションはこれよりも多くを使用するのでしょうか?

実装が機能している間に、どれだけのことを回避できるかを理解しようとしているだけだと思います。

4

2 に答える 2

7

最低限の pthread 実装で次の機能をカバーすることをお勧めします (" pthread_" プレフィックスは削除されています)。

  • 基本
    create的なスレッド操作exit_ _ _joindetachselfequalattr
  • プロセス統合
    atforkkillおよびsigmask
  • 同期プリミティブ
    condmutex関数 (デフォルトの属性のみ -- 凝ったものは何もありません!)、省略される可能性がありますcond_timedwait

の SUSv6 エントリを見てください<pthread.h>。バージョン 6 では、このヘッダーで呼び出されるオプション グループが多いため、SUSv7 より優先してリンクします。上記のリストは、任意の機能を削除してから、私の個人的な歴史と観察から、重要でない (例: スレッド固有のデータ)、または重要ではなく危険である (例: スレッドのキャンセル) と示唆される他の機能のセットを削除することによって構成されています。:)

于 2009-08-20T05:36:36.680 に答える
5

ミューテックスと条件変数をサポートする必要があります。ミューテックスと条件変数がないとスレッド化は使用できず、どちらも広く使用されているためです。セマフォ(pthreadの一部ではない)をサポートしなくても逃げることができると思いますが、セマフォなしで本格的なMT作業を行うことは想像できません。

スレッド化をサポートし、必要な機能を実装する、次に提案されているC++標準を検討することは興味深いかもしれません。お使いのOSが将来の標準C++プログラムをサポートできる場合、それはかなり良い状態になります。

于 2009-08-19T08:01:27.427 に答える