0

この宿題を誰かにやってもらうように頼んでいるわけではありませんが、C# とスレッド化の実用的な入門書として非常に優れているので取り上げますが、同時に、少し単純すぎると感じています。

これは本当にスレッドを教える最良の方法ですか? この演習で「失われた」主要なスレッド化の概念は何ですか?初めてスレッドを使用する新しいプログラマーが観察できない可能性があるものは何ですか?

私はスレッド化について多くの理論的知識を持っていますが、過去に自分で多くのことをする必要はありませんでした.それを書くときに誰かが私に警告がありますか?

ここに元の課題へのリンクがあります

目標のテキストは次のとおりです。

1) スレッドセーフな汎用循環キュー クラスを作成し、それを使用する GUI を作成します (次のセクションを参照)。このコンテキストでは、スレッド セーフとは、データの破損を避けるために、キューの内容を変更する各操作 (メソッド) を一度に 1 つのスレッドだけで実行する必要があることを意味します。循環キューは、キューの先頭と末尾が配列内のインデックスである固定サイズの配列として実装されます。キューがいっぱいになると、要素が追加されるにつれてキューの最初と最後がより高い値にシフトし、最終的には配列の最初のインデックスにラップアラウンドしてメモリを再利用します。このクラスは、操作が無効な場合、呼び出し元に例外 (以下で指定) もスローする必要があります。

2) プロデューサー/コンシューマー方式で 2 つのスレッドを制御する GUI を作成します。GUI は、プロデューサー スレッドとコンシューマー スレッドの両方を開始、開始、停止し、GenericCircularQueue を変更する速度を制御できます。

4

3 に答える 3

2

これを読む:

2 番目のリンクは、ほとんど単独で立つことができます。

于 2009-03-19T15:36:01.747 に答える
1

これには次の 2 つの大きな点が欠けていると言えます。

  • 大量の書き込み、読み取りはロックを取得できず、飢えます。結果: このような限定されたキューがいっぱいになります。読者がキューを空にできるように、読者により高い優先度を与える方法が必要です。
  • スケーラビリティ---読み取りまたは書き込みにロックを要求するだけで、非常に簡単にスレッドセーフにすることができます。これは、1 つのリーダー/1 つのライターに対してうまく機能します。ただし、多数のプロデューサー/コンシューマーが存在すると、多くのスレッド競合が発生します。
于 2009-03-19T18:07:08.610 に答える