最終更新:
mikk_ni3_92 2008年07月27日(日) 14:53:24履歴
現在地 >> メニュー >> TBB >> TBB::アトミック操作
#include <cstdio> #include <tbb/task_scheduler_init.h> #include <tbb/blocked_range.h> #include <tbb/parallel_for.h> #include <tbb/atomic.h> tbb::atomic<int> atmX; //宣言と同時に初期化はできない!! //-------------- 各種データ構造 --------------------// class AtomicInc { public: //コンストラクタ AtomicInc(){} //オペレータ void operator()(const tbb::blocked_range<int> &range)const { for(int n = range.begin();n != range.end();++n) { printf("%d \n",atmX.fetch_and_increment()); } } }; //-------------Tbbの処理------------------------// void TbbProcess() { atmX = 0; //初期化 tbb::task_scheduler_init TbbInit; tbb::parallel_for(tbb::blocked_range<int>(0,100),AtomicInc(),tbb::auto_partitioner()); TbbInit.terminate(); } //-------------- メイン関数 ------------------------// int main(int argc, char *argv[]) { TbbProcess(); return EXIT_SUCCESS; }