私はクリティカル セクションを含むプログラムに取り組んでいるので、セマフォを使用しています。具体的には、POSIX セマフォ: http://www.kernel.org/doc/man-pages/online/pages/man3/sem_close.3.html
http://www.sbin.org/doc/glibc/libc_34.html (検索: マクロ SEM_VALUE_MAX ) によると、一般的なセマフォに設定できる最大値があります。私のシステムでは、これは約 32K です。
残念ながら、私は時間に敏感なコード(〜1MBit / sでシリアルポートを介してarduinoから読み取る)を扱っているため、実装の詳細のために、より大きなセマフォが必要です。理想的には、少なくとも 2^20 にできるようにしたいのですが、とにかく上限がある理由が少しわかりません。
この SEM_VALUE_MAX を超えて、より大きな値のセマフォを取得する方法はありますか? 私は次のことしか考えられませんでした:
- SEM_VALUE_MAX の再定義
- おそらく恐ろしい考えです。それらのPOSIXの人々は彼らが何をしているかを知っていると思います
- セマフォが複数のデータの「チャンク」を参照するようにする
- 現在、各 up() または down() は、単一の「チャンク」(unsigned short int) のみを取得/解放します。
- 一度に複数の処理を行うと、デッドロックが発生する可能性があると思います。
- 独自のセマフォを実装しています。
- 時間のかかる/冗長な作業
- 携帯性が低い
- 素晴らしい人々にあなたの考えを聞いてください!
事前にたくさんありがとう!