C++でGOLANGを使用するためのコンボ
3495 ワード
http://www.cnblogs.com/yyzybb/p/4985973.html
オープンソースプロジェクトcpp_featuresはgolangコヒーレンスを模したstackfulコヒーレンスライブラリを提供した.c++でgolangのコラボレーションを使用できます.構文は次のようになります.
どうですか.文法はgolangに似ていますか.以下はこのプロジェクトのReadMeです
Coroutineは、C++11を使用して作成されたスケジューラstackfulコパスライブラリであり、強力なパラレルプログラミングライブラリであり、現在2つのプラットフォームをサポートしています.
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を使用したコンパイルインストール: Windows: 1.git submodule update–initを使用してサブモジュール2をダウンロードします.coroutine/win_へpatch/VS 2015ディレクトリ、coroutineを開きます.slnは、ソリューション全体をコンパイルする必要はなく、coroutineエンジニアリングをコンパイルするだけです.テストエンジニアリングはboost-x 64に依存するが、コンパイルするには64 bitのboostライブラリをコンパイルする:コンパイルパラメータ:
ネットワークライブラリ: coroutineに基づいて作成されたネットワークライブラリは、networkディレクトリでudp/tcpプロトコル をサポートします.
RPCフレームワーク: coroutineとnetworkに基づいて作成された高性能汎用RPCフレームワークUcorfは、大規模な分散サービス端末、オープンソースアドレスの構築に適しています.https://github.com/yyzybb537/ucorf
オープンソースプロジェクト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非同期モデルを超えている.特に,パケットとマルチスレッドの並列処理において非常に強力である.
coroutineのコンパイルと使用:
$ 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++
bjam.exe address-model=64 --build-type=compelete
システムとthreadの2つのライブラリを少なくともコンパイルし、エンジニアリング設定でboostを参照するパス3を調整する.coroutineプロジェクトのコンパイル(デフォルトのエンジニアリング構成はx 64-Debug-mt版のみで、他のバージョンは自分でエンジニアリング構成を変更してください)4.使用時にincludeディレクトリを2つ追加する必要があります:coroutineとcoroutine/win_patch ネットワークライブラリ:
RPCフレームワーク: