unity Queue

8782 ワード

元の記事:https://blog.csdn.net/qq_38655924/article/details/81036803
当初学んだことがあって、しかしとっくに忘れて、今日1つの需要のため、同僚の注意を経て、彼を思い出しました.まず記録と総括をして、後期に補充します.
Queueキューが先に出ます.
今日の需要:音声認識、c++の向こうは私に(彼はオンラインの行程の中で、私はunityでメインの行程の中で)音声認識した文字列を伝えて、もし新しい文がなければ、更に私に1つの文字列の後ろに1つの句点を加えます.
これは、Updateで彼のメソッドを呼び出し、彼のデータを2回受信することを意味します!!!通常は受信して受け取り、Update呼び出しはずっと呼び出されていますが、あいにく論理的には「次のページ」を聞く必要があります.私はジャンプして、聞いて、私はまたジャンプします.しかし、私はこのように2回受信して、私が3つの階層のインタフェースだけで2回実行することを意味して、これは私が3ページ目から直接トップページに行ったことを意味します.
これが問題です.
問題を見つけて、問題を研究して、どのように問題を解決するかを研究して、スキップします.
どのように解決しますか?
queue、キュー、先進先出を使用します.
私が一言言ったら、彼は文字列を詰めて、また一言言って、また詰めます.
Unity呼び出しは、この時点でもう一方の端で呼び出されます.順次取り出す.
そして、プログラムがクラッシュしないようにロックを書く必要があります.格納と読み取りを同時に行うことはできません.次にコードを入れます.
start宣言

   
   
   
   
  1. queue = new Queue< string>();

Update


   
   
   
   
  1. string text;
  2. lock (queue) //
  3. {
  4. if ( 0 == queue.Count)
  5. {
  6. return;
  7. }
  8. text = queue.Dequeue(); //
  9. }


   
   
   
   
  1. lock (queue)
  2. {
  3. queue.Enqueue( temp1);
  4. }
temp1 c++ 。