C ++ 11並行プログラミングエントリ

  一部の人々は考え、マルチスレッドと複合体と攻撃を開始するだけでなく、コードにさまざまな問題を作るが、実際にそれがプログラムをより速く実行されるようプログラムは完全にハードウェアリソースを活用することを可能にする強力なツールであること。

何によって複雑になります。

  2つ以上の独立した活動が同時に発生しなければなりません。コンピュータを単一のシステムであると同時に、タスクを並列に実行されるように見えることができますしばらくの間、実行する別のタスクに切り替え、しばらくの間、このタスクを実行することによって、複数の独立したタスクを実行します。コンテキストスイッチの切り替えは、CPUのオペレーティングシステムは、現在のタスクの状態とタスクの計算に切り替えたいポインタ、およびプロセッサの状態をリロードする今後のスイッチのためのタスクを実行している節約、時間コストがあるだろう、行われます。

同時方法:

  同時マルチスレッド、マルチプロセス

  より複雑なプロセス:

  同様に、同時に、この方法は、より複雑なプロセスに属しているWebブラウザ、QQ、言葉を実行します。プロセス間のパイプ、ソケット、ファイル、およびその他の手段を介して通信します。

  マルチスレッド:

  単一のプロセスで複数のスレッドを実行します。プロセスのすべてのスレッドは、アドレス空間を共有しました。

なぜ同時実行:

  1:関心の分離

  2:パフォーマンスの向上

同時使用しないときは:

  基本的には、並行処理を使用しない唯一の理由はないコストメリットとして、です。マルチスレッドコードを記述し、維持するので、理解しにくい多くの場合、並行コードを使用すると、すぐに精神的なコストと、追加の複雑さはまた、より多くのエラーにつながる可能性が生成されます。潜在的なパフォーマンスの向上が必要な余分な開発時間と(コード正しい前提の下で)マルチスレッドコードの余分なコストに関連したメンテナンスを相殺するために十分クリアするのに十分な大きさや懸念の分離である場合を除き、それ以外の場合は、同時実行性を使用しないでください。また、スレッドは、限られた資源です。あなたは、同時に実行されている、あまりにも多くのスレッドをさせた場合はそれが全体としてのオペレーティング・システム上で実行速度が遅くなるよう、オペレーティングシステムは、多くのリソースを消費します。

並行処理の簡単な例:

HELLO.CPP // 
の#include <iostreamの> する#include <スレッド> // サポートマルチスレッディングヘッダ 使用 名前空間STDを、 ボイド thread_func() // 子スレッドエントリ機能 { COUT << 、 " こんにちはスレッド" << ENDL; } int型のmain() { スレッドmy_jobという(thread_func); my_job.join(); // 子スレッドのようなメインスレッドがを続行する前に終了した COUT << " こんにちはメイン" << てendl; 返す 0 ; }
#CMakeLists.txtは
(バージョンcmake_minimum_required 3.51 セット(CMAKE_CXX_FLAGS " $ {CMAKE_CXX_FLAGS} -std = C ++ 11 -march = -03ネイティブ-pthread " 
プロジェクト(thread_test)
add_executable(thread_test1 HELLO.CPP)

 

おすすめ

転載: www.cnblogs.com/418ks/p/11570363.html