рдмрд╣реБ рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Intel TBB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

TBB рдпрд╣ рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред



рдЗрдВрдЯреЗрд▓ рдереНрд░реЗрдбрд┐рдВрдЧ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рддреИрдирд╛рддреА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХрдИ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд┐рд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдХрд┐рд╕ рдордВрдЪ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╣ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗрддреА рд╣реИред



рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЗрдВрдЯреЗрд▓ рдЯреАрдмреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдУрдкрдирдПрдордкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛, рдЬреЛ рдПрдордбреА 5 рдореЗрдВ рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдмрд▓ рджреЗрддрд╛ рд╣реИред рд╣рдо рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЯреАрдмреАрдмреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВред



рдореИрдВ рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░рд╡рд╛рдКрдВрдЧрд╛, рдпрд╣ MD5 рдореЗрдВ рдЗрд╕рдХреЗ рд╣реИрд╢ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕рд╡рд░реНрдб рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬрд╛рдирд╡рд░ рдмрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп, рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИрдВред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 3.0 рд╕рдВрд╕реНрдХрд░рдг рдерд╛ред рдбрд┐рд╕реНрдХ рдкрд░ рдХрд┐рд╕реА рднреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЕрдирдкреИрдХ рдХрд░реЗрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдлрд╝реЛрд▓реНрдбрд░ D: \ Libs \ (рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓рд╛ рдерд╛ рд╡рд╣ D: \ Libs \ tbb30_20100406oss \ ) рдерд╛ред



рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдПрдордПрд╕ рд╡реАрдПрд╕ 2008 рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреБрдЫ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде, рд▓реЗрдЦ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдПрдордПрд╕ рд╡реАрдПрд╕ рдХреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдЪ рд╣реИред



рдПрдХ рдирдпрд╛ рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдореЗрдВ, рдЖрдкрдХреЛ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдпреБрдХреНрдд рдлреЛрд▓реНрдбрд░, рдФрд░ рд▓рд┐рдВрдХрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╡рд╛рд▓реЗ рд▓рд┐рдм рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреБрдг рдЦреЛрд▓реЗрдВ, C / C ++ -> рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдкрд░, рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рд╛рдорд┐рд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рд▓рд╛рдЗрди рдореЗрдВ, рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ , рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ D: \ Libs \ tbb30_2010040680 \ _ рдХрд╛ рдкрде рд╣реИред



рдЫрд╡рд┐



рдЗрд╕рдХреЗ рдмрд╛рдж, Linker -> General рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд┐рд░реЗрдХреНрдЯреНрд░реАрдЬрд╝ рдлрд╝реАрд▓реНрдб ( D: \ Libs \ tbb30_20100406oss \ lib \ ia32 \ vc9 ) рдореЗрдВ Lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдЬреЛрдбрд╝реЗрдВред



рдЫрд╡рд┐



рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ MS VS рдХреЗ рдЯрд╛рд░рдЧреЗрдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдФрд░ рд╡рд░реНрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд▓рд┐рдмрд░ рдлреЛрд▓реНрдбрд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10 рд╡реЗрдВ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдпрд╣ 64-рдмрд┐рдЯ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо lib \ Intel64 \ vc9 рдХреЗ рд▓рд┐рдП lib \ ia32 \ vc10 рд╣реЛрдЧрд╛ ред



рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



#include "tbb/task_scheduler_init.h"

#include "tbb/parallel_for.h"

#include "tbb/blocked_range.h"

using namespace tbb;




* This source code was highlighted with Source Code Highlighter .






рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдореЗрдВ, рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, task_scheduler_init рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдХрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред



int _tmain( int argc, _TCHAR* argv[])

{

task_scheduler_init init;



return 0;

}



* This source code was highlighted with Source Code Highlighter .






рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдРрд╕реА рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рд╡рд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдордбреА 5 рд╣реИрд╢ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдЧрд╛ред



class MD5Calculate

{

public :

//////////////////////////////////////////////////////////////////////////

// , TBB

// ,

// ""

//////////////////////////////////////////////////////////////////////////

void operator () ( const blocked_range< int >& range) const

{

string md5;

stringstream stream;



for ( int i = range.begin(); i != range.end(); i++)

{

stream.clear();



stream << i;



GetMD5Hash(stream.str(), md5);



if (md5 == g_strCompareWith)

{

cout << "Password is: " << stream.str() << endl;



exit(0);

}

}

}

};




* This source code was highlighted with Source Code Highlighter .






рдЗрд╕ рдХреЛрдб рдХреЛ parallel_for рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛



int _tmain( int argc, _TCHAR* argv[])

{

task_scheduler_init init;



//////////////////////////////////////////////////////////////////////////

// ,

// 8000000 8999999

//////////////////////////////////////////////////////////////////////////



parallel_for(blocked_range< int >(8000000, 8999999), MD5Calculate());



return 0;

}




* This source code was highlighted with Source Code Highlighter .






рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдФрд░ рдЬреЛ рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ, рдЯреАрдмреАрдмреА рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рддрд╣рдд рдзрд╛рд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдПрдХ рдФрд░ рдкреНрд▓рд╕ рдпрд╣ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреБрдж рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдереНрд░реЗрдбреНрд╕ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреАред



рд▓рд╛рдпрдмреНрд░реЗрд░реА рд╕рдорд╛рдВрддрд░ рдФрд░ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╛рдВрддрд░_рдлреЛрд░ рд▓реВрдк рдХреЛ рд╕рдорд╛рдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рд╕рдорд╛рдВрддрд░_реНрд░реЗрдбреНрдпреВрд╕ , рд╕рдорд╛рдирд╛рдВрддрд░_рдПрд╕рдХреЗрди , рд╕рдорд╛рдВрддрд░_рдбреЛ , рдХрдВрдЯреЗрдирд░, рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдк рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕, рд╕реЛрд▓рд╛рд░рд┐рд╕ рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рднреАред



All Articles