C++でGOLANGを使用するためのコンボ

3495 ワード

http://www.cnblogs.com/yyzybb/p/4985973.html
オープンソースプロジェクトcpp_featuresはgolangコヒーレンスを模したstackfulコヒーレンスライブラリを提供した.c++でgolangのコラボレーションを使用できます.構文は次のようになります.
 1 #include <iostream>
 2 
 3 void foo()
 4 {
 5     std::cout << "foo" << std::endl;
 6 }
 7 
 8 co_main()
 9 {
10     go foo;
11 }


どうですか.文法はgolangに似ていますか.以下はこのプロジェクトのReadMeです
Coroutineは、C++11を使用して作成されたスケジューラstackfulコパスライブラリであり、強力なパラレルプログラミングライブラリであり、現在2つのプラットフォームをサポートしています.
Linux   (GCC4.8+)
Win7-64bit (VS2013/2015)

coroutineを使用してパラレルプログラムを作成すると、golang、erlangなどの同時言語のように迅速かつ論理的に簡潔に開発でき、C++オリジナルの性能優位性があり、魚と熊掌を兼ねることができます.
coroutineには*1.golangの一般的な機能を提供し、corontineに基づいてコードを記述し、簡単なコードを同期的に記述し、同時に非同期の性能を得ることができます.*2.大量の協程をサポートし、100万個の協程を作成するには1 GBのメモリ*3を使用する必要がある.ユーザーが自由に協程スケジューリングポイントを制御し、スケジューリングスレッド数を勝手に変更することを許可する.  * 4.マルチスレッドスケジューリング連携をサポートし、並列コードを書きやすく、効率的な並列スケジューリングアルゴリズムで、複数のCPUコア*5を有効に利用できる.プログラムにリンクされた同期のサードパーティ製ライブラリを非同期呼び出しに変更し、パフォーマンスを大幅に向上させることができます.hiredis、mysqlclientのようなクライアントドライバが直接使用でき、非同期driverに負けない性能を得ることができるDBの公式は、非同期driverを提供していないことを心配する必要はありません.  * 6.動的リンクと静的リンクはすべてサポートされており、C++11のユーザー静的リンクを使用して実行可能ファイルを生成し、低バージョンのlinuxシステムに配備するのに便利です.  * 7.コモンロック(co_mutex)、タイマ、channelなどの特性を提供し、ユーザーがプログラムをより容易に作成できるようにする.  * 8.ネットワーク性能は強く、ASIO非同期モデルを超えている.特に,パケットとマルチスレッドの並列処理において非常に強力である.
  • バグが見つかったり、良いアドバイスがあったり、使用上不明な点があったりしたらissueに提出したり、著者:emailに直接連絡したりすることができます[email protected]交流群:296561497
  • coroutine/samplesディレクトリには、coroutin eライブラリの使用方法を逐次漸進的に学習できるように、詳細な使用説明が含まれています.

  • coroutineのコンパイルと使用:
  • Linux:  0.ucorfをインストールした場合はcoroutineをインストールしました.手順1をスキップできます.  1.CMakeを使用したコンパイルインストール:
        $ mkdir build
        $ cd build
        $ cmake .. -DCMAKE_BUILD_TYPE=RELEASE
        $ sudo make install
    
    デバッグ可能なバージョンをコンパイルするには、cmake行のコマンドを
        $ cmake ..
    
    に変更する必要があります.ダイナミックリンクで使用する場合は、libcoroutineを最初にリンクする必要があります.so、libdlをリンクする必要があります.so. 例えば、
        g++ -std=c++11 test.cpp -lcoroutine -ldl [-lother_libs]
    
    .静的リンクで使用する場合はlibcoroutineをリンクするだけです.aでよい、最初のリンクは要求されないがlibc.a最後にリンクされる.例:
        g++ -std=c++11 test.cpp -lcoroutine -static -static-libgcc -static-libstdc++
    
  • Windows:  1.git submodule update–initを使用してサブモジュール2をダウンロードします.coroutine/win_へpatch/VS 2015ディレクトリ、coroutineを開きます.slnは、ソリューション全体をコンパイルする必要はなく、coroutineエンジニアリングをコンパイルするだけです.テストエンジニアリングはboost-x 64に依存するが、コンパイルするには64 bitのboostライブラリをコンパイルする:コンパイルパラメータ:
       bjam.exe address-model=64 --build-type=compelete
    
    システムとthreadの2つのライブラリを少なくともコンパイルし、エンジニアリング設定でboostを参照するパス3を調整する.coroutineプロジェクトのコンパイル(デフォルトのエンジニアリング構成はx 64-Debug-mt版のみで、他のバージョンは自分でエンジニアリング構成を変更してください)4.使用時にincludeディレクトリを2つ追加する必要があります:coroutineとcoroutine/win_patch

  • ネットワークライブラリ:
  • coroutineに基づいて作成されたネットワークライブラリは、networkディレクトリでudp/tcpプロトコル
  • をサポートします.
    RPCフレームワーク:
  • coroutineとnetworkに基づいて作成された高性能汎用RPCフレームワークUcorfは、大規模な分散サービス端末、オープンソースアドレスの構築に適しています.https://github.com/yyzybb537/ucorf