0

関数mq_receive()でメッセージキューを使用できることをご存知でしょう。セマフォを使用してその機能(共有データが変更されるまで待機)を実装するための良い方法は何ですか?

4

1 に答える 1

1

標準的な方法:

  • コンシューマは、コンシューマが消費する準備ができているものがあることをプロデューサが示すのをセマフォで待機します。
  • プロデュースは、消費者が消費する準備が整ったときにセマフォにシグナルを送ります。

複数のコンシューマと複数のプロデューサがある場合は、セマフォがプロデューサによって複数のリクエストをキューに入れるのに十分な範囲があることを確認し、コンシューマが一度に複数のリクエストを処理する方法を知っていることを確認します。ただし、これはすべて標準的なマルチプロセッシング (マルチスレッド) 理論です。

必要な操作の概要が必要な場合は、次のPOSIXマニュアル ページを参照する必要があります。

システム V IPC

  • semctl()
  • セムゲット()
  • セモップ()

POSIX IPC

  • sem_close()
  • sem_destroy()
  • sem_getvalue()
  • sem_init()
  • sem_open()
  • sem_post()
  • sem_timedwait()
  • sem_trywait()
  • sem_unlink()
  • sem_wait()
于 2010-04-02T18:45:40.400 に答える