私はマルチスレッド システムにまったく慣れていないので、オブジェクトの適切なデータ構造について質問があります。
いくつかの属性を持つオブジェクト イメージがあります。そのうちの 2 つは、イメージ データを格納するバイト配列データと、ステータスを格納する int 変数 status です。
私はある種のコンベヤ ベルト アーキテクチャを持っています。つまり、カメラ スレッドがデータを画像属性に格納し、その後にコンバータ スレッドが続き、その後に処理スレッドが続きます。したがって、1 つのスレッドが先行スレッドの出力を処理する必要があります。
同期を避けて効率を上げるために、私の考えは、LinkedList<Image>
画像オブジェクトを保存することです。webcam-thread は最初の画像オブジェクトを作成し、status=1 (進行中のデータ書き込みを意味する) を割り当て、終了して次の画像に進む場合は status=2 を割り当てます。次のコンバーター スレッドはステータス属性のみを読み取ります。1 の場合はスリープまたは待機します (Webcam スレッドによって通知可能)、2 の場合はステータス 3 を割り当てて作業を開始します。終了すると status=4 に設定され、次の画像オブジェクトに進みます。次のスレッドは再びステータスを読み取り、ステータスが 4 未満の場合はスリープします。
最後に私の質問は、1 つだけが書き込み操作であり、もう 1 つの (読み取り) アクセスが別の属性/変数 (同じ物体)。