C ++ 11並行処理及びマルチスレッド(講義)


    A:同時実行、プロセスの基本的な概念


    同時マルチスレッドプロセスの要件は、マスターしなければならない;
    (1.1)、同時
    二つ以上のタスク(独立したイベント)(BE)が同時に起こる:複数の独立したタスクのプログラムを同時に実行する
    コンピュータのシングルコアCPU(中央処理装置)A前オペレーティングシステムによるスケジューリング、第二のいわゆるタスク切り替えごとに複数回:時間は、1つのタスクのみを実行することができます。
    同時幻想(真の同時されていない)、このスイッチ(コンテキストスイッチ)は、そのようなあなたが切り替わるときの状態を保存したいオペレーティングシステムの様々なとして、オーバーヘッド時間です。
    実施スケジュール及びその他の情報は、時間がかかりますが、時間がかかる情報に対応するために必要に切り替わります。

    ハードウェアの開発は、マルチプロセッサコンピュータがあった:サーバや高性能コンピューティングのために。
    デスクトップ:マルチコア(複数の)単一のチップ上のCPU:デュアルコア、クアッドコア、8コア...
    そしてあなたが本当に複数のタスク(同時ハードウェア)を実行することができるという。

    並行性を使用する理由:主なものは、同時にパフォーマンスを向上させるために多くを行うことができるということです。

    (1.2)実行可能な
    ディスク上のファイル、次のWindows、.exe拡張子。
    Linuxでは、LSはのrwxrwxrwx実行権限を持っている-LA。

    (1.3)プロセス:実行できる実行可能プログラム
    を実行するための実行可能なプログラム上のウィンドウの下で、ダブルクリック
    のLinux ./ファイル名./aの下で、
    実行可能プログラム起動して実行、プロセスの作成と呼ばれ、
    プロセスが実行されています実行可能プログラムアップ。

    (1.4)スレッド:
    A)各プロセスが(実行可能なプログラムを実装する)、メインスレッドは、メインスレッドが固有である、である、プロセスは、唯一のメインスレッドを有することができます。
    あなたがプロセスで、その結果、実行可能プログラムを実行すると、B)、プロセスとメインスレッドは静かに起動します。

    実際には、あなたがプログラムを実行すると、実際には、それがコード(呼び出しに)の主な機能を実行するためのプロセスのメインスレッドで、
    スレッドとプロセスは、手をつないで行く、あなたは私を持って、私はあなたを持っています。
    スレッド:コードを実行するために使用されます。
    この事は、スレッド、コードの実行パスとして理解することができます。
    メインスレッドに加えて、我々は他のスレッドが他の道路を取って、自分の書き込みコードを介して他のスレッドを作成することができます。完全な異なった目的は、
    それぞれが、私は同時に、異なる中でより多くのことを行うことができます(多くの異なるコード実行パスに従うこと)、新しいスレッドを作成し、


    マルチスレッド(同時)
    スレッドが不可能であり、スレッド間の切り替え、別のスタックスペースを購入するために、各スレッドの必要性は、中間状態の多くを保存する必要があり、
    現時点で実行中のプログラムに属しているがかかります。

    スレッドをまとめ:
    スレッドがコードを実行するために使用され、
    コード実行パススレッドとしてこのことを理解すべき、新しいスレッドは、新しいパスを表します。
    自動のプロセスがメインスレッド、静かに稼働中のプロセスとメインスレッドを含む、我々はコードでコンパイルされ、他のスレッド(非メインスレッド)を作成することができる
    が、数は、適切な数として、300以上200の作成は推奨されません私たちは、実際の状況を最適化する必要があります。
    メインスレッドが自動的に作動しているので、その少なくとも一つのスレッド(メインスレッド)プロセスとスレッドの処理が感は関係のステータスであり、彼の息子は
    はっきりそれを置く:マルチスレッドプログラムが同時により多くのことを行うことができ、運転効率が比較的高いが、どのようにハイエンドでは、評価し、定量化するための簡単なことではありません。
    我々はまだ実際のプロジェクトで調整し、最適化する必要がある。
    (1.5)の経験を学んで
    マルチスレッドプログラムの開発:上級プログラマが不可欠なスキルです。
    C ++のスレッドが新しい概念の比較的多数、心配して、高い給料のために特に重要ではないが関与します。


    II:同時実装


    二つ以上のタスク(独立した事象)(も)同時に発生し
    、並行性を達成するための手段:
    A)を複数のプロセスを通して我々の同時実行。
    b)は別のプロセスでは、私は並行性を達成するために複数のスレッドを作成し、メインスレッド以外のスレッドを作成するために、独自のコードを記述し、
    (2.1)より複雑なプロセス
    の起動後の単語の後にはプロセスであり、すなわちブラウザが起動されますプロセス・
    アカウント・サーバ、ゲームロジックサーバ、サーバプロセス間通信。
    (同じコンピュータ上:パイプ、ファイル、メッセージキュー、共有メモリ)プロセス間通信、
                                 異なるコンピュータ:ソケット通信技術。

    (2.2)マルチスレッド:複数のスレッドを作成するための単一のプロセス。
    スレッド:それはすべてのスレッド共有アドレススペース(共有メモリ)各スレッドは、独自の独立した運用パスを持っている、軽量プロセスのように感じるが、プロセス;
    そうグローバル変数、ポインタ、参照がスレッドに渡すことができますが、 :使用してはるかに少ない複数のプロセスのコストよりもマルチスレッド。
    共有メモリは、新たな問題が、データの整合性の問題をもたらす:スレッドA、スレッドBを、

    より複雑なプロセスとマルチスレッド混合することができるが、しかし、教師がマルチスレッド技術ではなく、複数のプロセスに優先権を与えることを示唆しました。

    この記事では、マルチスレッドについて、主です。

    (2.3)概要:
    スレッド以外とプロセスは、以下の利点を有する:
    (1)スレッドが高速起動、より軽量で、
    そのようなより共有メモリとして(2)コストより少ないシステムリソース、高速実行、この通信手段を通信のほぼすべての他の手段。
    欠点
    ()難しさのある程度の使用を、慎重な取り扱いデータの整合性の問題を必要としています。

    3:C ++ 11標準スレッドライブラリ


    窓:のCreateThread()、_beginthread( )、_ beginthreadex()は、スレッドの作成
    Linuxの:のpthread_create()はスレッドを作成
    クリティカルセクション、ミューテックスを、
    以前のマルチスレッドコードは、クロスプラットフォームにすることはできません。
    POSIXスレッド(pthreadの);クロスプラットフォーム、それが行われる必要がありますいくつかの構成では、それはそう簡単ではありませんそれらを使用しています。

    C ++ 11個の新しい標準から、C ++言語自体は、可搬性(クロスプラットフォーム)を意味し、マルチスレッドのサポートを追加します。これは、大幅に開発者の作業負荷を軽減します。


  

公開された101元の記事 ウォン称賛73 ビュー120 000 +

おすすめ

転載: blog.csdn.net/usstmiracle/article/details/104130442