|
const int SIZE = 10000000 ;
// Ishlovchi
sinf klassi CalculationTask
|
bet | 5/5 | Sana | 25.05.2024 | Hajmi | 166,2 Kb. | | #253830 |
const int SIZE = 10000000 ;
// Ishlovchi
sinf klassi CalculationTask { vektor < double > & myArray ; public : // Operator () iteratsiya bo'shlig'idan bir diapazonda bajariladi void operator ()( const tbb :: blocked_range < int > & r ) const { for ( int i = r . begin (); i != r . end () ; i ++ ) Hisoblash ( myArray [ i ]); }
// Konstruktorni
hisoblash vazifasi ( vektor < double > &a a ) : myArray ( a ) { } };
int main () { vektor < double > myArray ( SIZE );
// tbb uchun parallel algoritmni ishga tushirish :: parallel_for ( tbb :: blocked_range < int > ( 0 , SIZE ), CalculationTask ( myArray ));
qaytish 0 ; }
C++ 11 dan lambda funksiyalaridan foydalanish:
// Kerakli sarlavha fayllari kiritilgan
#include “tbb/blocked_range.h”
#include “tbb/parallel_for.h”
#o'z ichiga
// Vektor elementlari soni
const size_t SIZE = 10000000 ;
int main ( ) { std :: vektor myArray ( SIZE ) ;
// tbb uchun parallel algoritmni ishga tushirish :: parallel_for ( tbb :: blocked_range < size_t > ( 0 , SIZE ), // Lambda funktsiyasi [ & myArray ]( const tbb :: blocked_range < size_t > & r ) { for ( size_t i = r . start (); i != r . end (); i ++ ) Hisoblash ( myArray [ i ]); });
qaytish 0 ; }
|
| |