2016-10-05 9 views
2

私は自分でセマフォーについて学びました。私たちが持っていたクラスはあまり教えてくれませんでした私の11,500ドルの使用)。セマフォーは以前よりも意味がなくなりました。私がどのように動作しているかを知っていました。

とにかく、私はセマフォの使い方を理解し、睡眠 - 理髪師の問題に取り組んだ。

この理髪師は、誰かがsem_postに寝るのを待っています。顧客は、理髪店が顧客が離れることができるように「シートベルト」を掲示するのを待つ。

とにかく、セマフォがスレッドではないので、プロセス間でセマフォが共有されないことを理解した後、私は割り当てに戻りました。代入には、semget,semopsemctlの説明があり、引数にはstructsがあり、説明は非常にまばらです。

これらの記述は、セマフォーである 'ファイル'を開くためにsem_openを使用する他のウェブでの私の発見に直接反対しています。

とにかく - 私は私の質問は推測:

sem*機能に送信された「キー」とは何ですか? IPC_PRIVATEに設定されることもありますが、セマフォの記述子として使用されることもあります。

は、私は彼らが

答えて

2

キーが全体SysVIPCサブシステム全体で使用されているを支援しているよりも、これらのリソースは、私はもっと混乱して作っていると思うし、彼らはftok(3)機能により、パス名から導出することを意図した数値識別子です。

SysVセマフォの詳細は、マンページまたはhttp://beej.us/guide/bgipc/output/html/singlepage/bgipc.htmlまたはAPUE bookにあります。

+0

私は、SysVIPC以前に使用されていたセマフォーの別のタイプとSysVIPCセマフォーを混同しているというのが問題だと思います。それは私の問題を説明するだろうか? –

+0

SysVIPCセマフォ(sem *関数で操作)は古いものです。 POSIXセマフォ(sem_ *関数で操作される)は、より新しい、よりシンプルで、よりパフォーマンスが高いだけでなく、より強力でもありません(自動UNDO操作もセマフォーのグループに対するアトミック操作もありません)。しかし、名前のないPOSIXセマフォ(sem_initのマンページを参照)は、複数のプロセス間で共有可能です。共有メモリを使用して共有セマフォとしてマーキングするだけです。それはすべてマンページにあります。 – PSkocik

+0

その段落は実際の有用な情報に一緒に理解の雲をもたらした - ありがとう! –

関連する問題