..


スポンサーリンク

C + +での並行プログラミング

ステファノCanceddaによって書かれた記事
ページ1の6

シーケンスのプログラミングではないのバリエーションで、命令は常に順序で実行されるという保証を提供しています。 結果の動作は決定的である:同じ入力端子を挿入し、出力は同じ結果を得られる。
オペレーティングシステムを実行するプログラムごとにメモリ領域の保護を与えるプロセスを作成します。 これは独立したプロセスがエラーなしで同時に動作している可能性を提供します。

(そして、より高度な)別のは、 並行プログラミングです 包囲を導入すべきであり、それがどのように機能する前に、私の考えでは、オブジェクトの特定のタイプは、カーネルスレッドと呼ばれる

オブジェクトのカーネルスレッドは、オペレーティングシステムによって管理され、二つの基本的な機能を持っているとして。

  • 各スレッドは自分専用のスタック、例外情報、次に実行される命令を格納するプライベートデータ構造を持っている;
  • 全体のプロセスと、各スレッドは、共通のメモリ領域を。
スレッドの使用は、実行の面でいくつかの利点を有する。 特に、我々は完全に現在のパーソナルコンピュータ市場における支配的な技術であり、マルチコアCPUの性能を、利用する。 それは、このようにマシンが提供するコアの一方のみ、時間を活用できる​​、最新のアプリケーションの特定の複雑さが連続的に設計されていることは考えられない。

別の利点として、それを異なるパラメータで、おそらく、同じコードを実行する2つの異なるプロセスとして見ることができる、直接共有メモリを利用できる2つのスレッドよりも効率的です 複数回、同じプログラムを実行する場合は、スレッドをサポートしていないシステムでは、同じプログラムに基づいて複数のジョブを作成する必要があります。 この手法は動作しますが、資源の無駄であり、遅くなります。

代わりに、アルゴリズムの実行を停止し、ユーザによってトリガされるイベントを待つ代わりに、新しいスレッドを開始し、不要なダウンタイムを防ぐことができます彼らはI / Oブロッカーと呼ばれる三番目に、スレッドは、利点があるそれは、全体的なパフォーマンスを悪化させます。

並行プログラミングとは対照的に出力の、共有メモリ、エラーの原因へのランダムアクセスを避けるために、基本的な同期構造、の支援を必要としています。 また、 エラーの一連のプログラマがいるため、確定プログラムの予期しない動作の多くの場合不十分な栄養状態が公開されています。

このほかに、同期構文には、競合他社を行う際に、公平性を確保するためにこれらの構成要素によって生成された期待に起因する特定のパフォーマンスの損失でそのコードを実行するために必要なマシンタイムの両面で、コストを持っいる。

競争の管理を可能にする主要なオブジェクトは、以下の予想と、次の段落で詳しく説明されています:

  • 揮発性元素
  • インターロック機能
  • 交通ライト
  • クリティカルセクション
  • イベント
  • タイマー
  • ミューテックス
これらの各要素は、単純な問題の特定のクラスを解決するために自然な形で収まる。 より複雑な問題に対しては単に正しい結果を得るために一緒にこれらのオブジェクトを組み合わせて、最古の1つを使用すると上記のように定義されている問題点を必要とする問題の解決の十分な経過は複雑であり、非常に重要。 もし最悪の場合は十分に高い性能を得ることができないので、簡単に結果の正しさを保証するソリューションを見つけることができないため、同期オブジェクトの組み合わせは、、最高の状態で、複雑になることがあります。 最低ではない最悪の場合:そこに致命的なバグがあるとすぐに識別されなかった。 この時点では、ために我々が議論される問題の感度の両方を、非常に頻繁であるデバッグは常に同時実行環境で問題があるという事実である、フローは、実際の確定的な実行、プログラムの実行ごとに、順番にです。プロセッサは、操作を実行します常に異なっている。

同じカテゴリの...
E -ラーニング
エクセル(電子ブック) エクセル(電子ブック)
スプレッドシートおよび計算を作成します。 ちょうど25€。
HTML(コース) HTML(コース)
29€からWeb用のマークアップ言語。
VB.NET(コース) VB.NET(コース)
Visual Basicでデスクトップアプリケーションを作る.. 49€から。
スポンサーリンク