Ubuntuはbookとboot threadpoolをインストールします.
2165 ワード
最近はc++のlinuxアプリを書いていますが、スレッドの池を使って、スレッドの多くのコードを考えています.私はbookベースのbook threadpoolを選びました.
bootsをインストールします.私が選んだのはboots 1.51バージョンです.
1.bookのソースコードをダウンロードします.http://sourceforge.net/projects/boost/files/boost/1.51.0/
2.私はzipをダウンロードしました.ダウンロードが終わりました.zipを解凍して、bookのソースコードを獲得しました.
3.ソースのルートディレクトリ:
./bootstrap.sh (デフォルトでは/usr/local/includeと/usr/local/libにインストール)
sudo./b 2 install
4.インストール後にfailがあることを見たら、二つのパッケージをインストールしてください.
「インストール中のヒント: patchlevel.h:そのファイルやディレクトリがありません.解決:sudo ap-get install python-dev
「bzlib.h:そのファイルやディレクトリがありません.」解決:sudo appt-get install libz 2-dev
5.book threadpoolをダウンロードする:
http://prdownloads.sourceforge.net/threadpool/threadpool-0_2_5-src.zip?download
6.threadpool解凍後、ソースのテストを行います.
ソースの内容は:
7.threadpool-0_2_5-src/threadpool/bookの下の一つのフォルダとヘッダファイルをtest.cディレクトリにコピーします.
8.コンパイルできます.
g++test.cc-lbook_thread
TIMEを発見しましたUTCは定義されていません.この問題はブックt 1.51のバージョンが、「TIMEuUTC」を「TIMEuUTC_」に変更したことに由来しています.threadpoolでエラーを報告したファイルに行って、このマクロの定義を後者に変えたらいいです.
9.コンパイルにより、a.out実行可能ファイルを生成します.
10.a.outを実行すると、エラーが発生します.error while loading shared libries:librost_thread.so.1.0:cannot open shared oject file:No such file or directory
11.一言を加える:
sudo ldconfig/usr/local/lib
12.プログラムを再実行し、OK.
bootsをインストールします.私が選んだのはboots 1.51バージョンです.
1.bookのソースコードをダウンロードします.http://sourceforge.net/projects/boost/files/boost/1.51.0/
2.私はzipをダウンロードしました.ダウンロードが終わりました.zipを解凍して、bookのソースコードを獲得しました.
3.ソースのルートディレクトリ:
./bootstrap.sh (デフォルトでは/usr/local/includeと/usr/local/libにインストール)
sudo./b 2 install
4.インストール後にfailがあることを見たら、二つのパッケージをインストールしてください.
「インストール中のヒント: patchlevel.h:そのファイルやディレクトリがありません.解決:sudo ap-get install python-dev
「bzlib.h:そのファイルやディレクトリがありません.」解決:sudo appt-get install libz 2-dev
5.book threadpoolをダウンロードする:
http://prdownloads.sourceforge.net/threadpool/threadpool-0_2_5-src.zip?download
6.threadpool解凍後、ソースのテストを行います.
ソースの内容は:
#include <iostream>
#include "threadpool.hpp"
using namespace std;
using boost::threadpool::pool;
// Some example tasks
void first_task()
{
cout << "first task is running
" ;
}
void second_task()
{
cout << "second task is running
" ;
}
void task_with_parameter(int value)
{
cout << "task_with_parameter(" << value << ")
";
}
int main(int argc,char *argv[])
{
// Create fifo thread pool container with two threads.
pool tp(2);
// Add some tasks to the pool.
tp.schedule(&first_task);
tp.schedule(&second_task);
tp.schedule(boost::bind(task_with_parameter, 4));
// Wait until all tasks are finished.
tp.wait();
// Now all tasks are finished!
return(0);
}
test.ccとして保存します7.threadpool-0_2_5-src/threadpool/bookの下の一つのフォルダとヘッダファイルをtest.cディレクトリにコピーします.
8.コンパイルできます.
g++test.cc-lbook_thread
TIMEを発見しましたUTCは定義されていません.この問題はブックt 1.51のバージョンが、「TIMEuUTC」を「TIMEuUTC_」に変更したことに由来しています.threadpoolでエラーを報告したファイルに行って、このマクロの定義を後者に変えたらいいです.
9.コンパイルにより、a.out実行可能ファイルを生成します.
10.a.outを実行すると、エラーが発生します.error while loading shared libries:librost_thread.so.1.0:cannot open shared oject file:No such file or directory
11.一言を加える:
sudo ldconfig/usr/local/lib
12.プログラムを再実行し、OK.