私は自分でセマフォーについて学びました。私たちが持っていたクラスはあまり教えてくれませんでした私の11,500ドルの使用)。セマフォーは以前よりも意味がなくなりました。私がどのように動作しているかを知っていました。
とにかく、私はセマフォの使い方を理解し、睡眠 - 理髪師の問題に取り組んだ。
この理髪師は、誰かがsem_post
に寝るのを待っています。顧客は、理髪店が顧客が離れることができるように「シートベルト」を掲示するのを待つ。
とにかく、セマフォがスレッドではないので、プロセス間でセマフォが共有されないことを理解した後、私は割り当てに戻りました。代入には、semget
,semop
、semctl
の説明があり、引数にはstructs
があり、説明は非常にまばらです。
これらの記述は、セマフォーである 'ファイル'を開くためにsem_open
を使用する他のウェブでの私の発見に直接反対しています。
とにかく - 私は私の質問は推測:
sem*
機能に送信された「キー」とは何ですか? IPC_PRIVATEに設定されることもありますが、セマフォの記述子として使用されることもあります。
は、私は彼らが
私は、SysVIPC以前に使用されていたセマフォーの別のタイプとSysVIPCセマフォーを混同しているというのが問題だと思います。それは私の問題を説明するだろうか? –
SysVIPCセマフォ(sem *関数で操作)は古いものです。 POSIXセマフォ(sem_ *関数で操作される)は、より新しい、よりシンプルで、よりパフォーマンスが高いだけでなく、より強力でもありません(自動UNDO操作もセマフォーのグループに対するアトミック操作もありません)。しかし、名前のないPOSIXセマフォ(sem_initのマンページを参照)は、複数のプロセス間で共有可能です。共有メモリを使用して共有セマフォとしてマーキングするだけです。それはすべてマンページにあります。 – PSkocik
その段落は実際の有用な情報に一緒に理解の雲をもたらした - ありがとう! –