私の仕事は、ボトラー プロセスをシミュレートすることです。
「びん」を列に並べる担当者がいます。たとえば、彼の速度は毎秒 1 本です。これをスレッドで行いました。しかし問題は、2 番目のスレッドが必要だということです。これは、これらの「ボトル」を取得してキューから取り出し、別のキューに入れることを担当するマシンになります。
これは、「main」関数でキューとスレッドを作成することで行いました。次に、スレッドを開始し、パラメーターとして、作成したばかりのキューを入力しました。このようにして、スレッド (この場合は人) は「ボトル」をパラメーターとして渡されたキューに入れます。
その後、プログラムが実行されると、動作しますが、本来の動作ではありません。最初のスレッド (人) が要素をキューに入れ始め、それが終了すると、2 番目のスレッド (マシン) がキューの要素を削除し始めます。
私がプログラムに実行させたいのは、これら 2 つのタスクを同時に実行することです。これは、人 (最初のスレッド) が要素をキューに入れ始めるとすぐに、マシン (2 番目のスレッド) がそれらをキューから削除し始めることを意味します。 .
これが私のコードの一部です:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Queue *queue1 = new Cola (""); // First queue
Thread *Person = new Thread (); // Person who is in charged of putting bottles
Thread *Machine = new Thread (); // Machine in charged of removing elements of the queue
Person->queue(queue1);
Machine->dequeue(queue1);
system("Pause");
return 0;
return a.exec();
}
ここにスレッドのコードの一部があります
void Thread::queue(queue *c)
{
for (int i = 0; i < 10; i++)
{
c -> push (i);
cout << "Inserting to the queue the: " << i << endl;
this -> sleep (1);
}
}
void Thread::dequeue(queue *c)
{
while (!c -> empty())
{
c -> pop ();
this -> sleep (2);
}
}
これら 2 つのスレッドがどのように同時に機能するかについてのアイデアはありますか? あなたの助けとアイデアに感謝します。本当に感謝しています。