0

私はいくつかのスレッドを作成しなければならないプロジェクトに取り組んでいます(実際の数はテスター(TA)によって入力されます)。プログラミングだけでなくデザインにも問題があり、呼び出されるすべてのスレッドやエラーの原因となる可能性のあるスレッドに頭を悩ませることはできません。プロジェクトの期限が近づいているので、実際に私を元に戻すのであれば、これに時間を無駄にしたくありませんが、1つのスレッドだけが実行され、すべてが順次実行され、その後で実行されるようにプログラムを作成する必要があるかどうか疑問に思いました戻って、コードのスレッドセーフ部分を追加してみますか?元の2倍の時間がかかりますか?

プロジェクトの説明:注:倫理規定に違反しないように、できるだけ曖昧にするつもりです。申し訳ありません:(

プログラムは、n個のobjectAスレッド、m個のobjectBスレッド、およびr個のobjectCを受け入れる必要があります。

objectBスレッドは、objectAのコードと相互作用します。objectAスレッドはobjectBとobjectCのコードと相互作用しますobjectBとobjectCは直接相互作用しませんが、objectA -exを介して間接的に相互作用します:objectBはobjectAから何かを必要とします。objectAは、objectCを呼び出すことにより、その何かの結果を取得します

私の混乱は主に、この相互作用のすべてがm + nスレッドによって行われ、objectBがobjectAから何かを要求でき、objectAがobjectCがその何かを完了するのを待ってから戻るなど、説明全体にさまざまな制限があるという事実から生じています。 objectBにそれを。また、各objectAスレッドは、objectBからの1つの命令のみを一度に処理できます。

objectA、objectB、object Cが1つだけになるようにコードを記述したかどうかを知りたいのですが、戻って簡単に変更して、これらの1をm、n、rに変更できますか?

申し訳ありませんが、私の説明が少し混乱している場合。

4

1 に答える 1

1

スレッドが 1 つしか実行されず、すべてがシーケンシャルであるようにプログラムを作成し、後で戻ってコードのスレッド セーフ部分を追加する必要があるかどうか疑問に思っていました。

最初に最小限のスレッドでプログラムを動作させます。次に、複数のスレッドを使用するように書き直します。これにかかる作業量を過小評価してはいけません。そうするときは、すべての仮定を再検討する必要があります。

元の時間の2倍かかりますか?

少なくとも 2 倍の長さですが、機能する可能性が高くなります。一度にすべてを実行しようとすると、まったく機能しないよりも混乱してしまう可能性があります。努力に対して評価が与えられ、スレッド セーフのバグが時々発生するかどうかが問題ではない場合は、すべてを一度に行う方法が最高の評価を与える可能性があります。専門的に開発している場合は、複数のスレッドを使用してまれに再現不可能なエラーが発生するものよりも、1 つのスレッドで動作するものの方がはるかに優れています。

于 2012-10-28T08:08:24.190 に答える