9

私は糸脱毛がどのように機能するかについて頭を包み込もうとしています、そして私はそれを過度に複雑にしたかもしれないと信じています。

当初の理解:

以前は、スレッドは単一のクラスとそのサブクラスに制限されており、スレッド間でクラスを共有することはできず、スレッド間の通信によって理解するのが非常に困難であると考えていました。

新しい理解:

しかし、私がそれについてもっと読むと、代わりに、スレッドが同じコード内のランダムなポイントで実行されているように見えます。特定の領域に制限することもできますが、理論的には、同じコードが各スレッドで複数回実行される可能性があります。

別の言い方をすれば、コードを曲がり角と接続のある道路システムとして見ると、それらはプログラムが作成できるフローであり、メインスレッドはこれを実行するだけです。新しいスレッドが生成された場合、それをどこから開始するかを言うだけで、コードはそこから始まり、同じクラスとコマンドを使用できます。したがって、コードを「悪い」構造にすると、2つのコードが発生するリスクがあります。クラッシュ」しますが、コードの読み取りと書き込みに制限はなく、すべて同じプログラムの一部であり、「道路」上の複数の「車」だけです。

スレッドを特定の領域(コードのループ/制限された部分)内にとどめて特定の場所でのみ対話するように制限することも、無視して「クラッシュ」を回避したい場合もあります。


「新しい理解」がスレッドで機能することで、頭を包み込むのがとても簡単になります。それで、それは正しいと理解されていますか?

4

1 に答える 1

1

あなたはほとんどそれを打った。一般に、スレッドは特殊な作業を行うためにあり、互いに重複することはありません。メインスレッドが作業を行うためにサブスレッドを生成する必要がある場合、メインスレッドもほとんどの場合この作業を実行しません。

それらが重なる領域は、お互いのつま先を踏まないように「スレッドセーフ」である必要があります。たとえば、メインスレッドのコレクションを埋める複数のワーカースレッド。MSDNでクラスを検索しているときに、スレッドセーフが組み込まれているかどうか、または.netのロック、ミューテックス、またはセマフォを使用して自分で行う必要があるかどうかを示す下部の宣伝文句に気付くでしょう。

于 2013-03-25T12:44:25.890 に答える