#include <iostream> using namespace std; const unsigned int NUMELEM = 20; const unsigned int THREADCNT = 6; int Data[NUMELEM]; void DoStuff( unsigned int const& thid ) { cout<<"ThID:"<<thid<<endl; const unsigned numTasks = NUMELEM/THREADCNT, numTougherThreads = NUMELEM%THREADCNT; for( unsigned int index0 = (thid < numTougherThreads ? thid * (numTasks+1) : NUMELEM - (THREADCNT - thid) * numTasks), index = index0; index < index0 + numTasks + (thid < numTougherThreads) ; ++index) { cout<<"Data["<<index<<"], "; } cout<<endl; } int main() { for( unsigned int thid = 0; thid != THREADCNT; thid++) { // TBU: Make multithreaded DoStuff( thid ); } return 0; }
Standard input is empty
ThID:0 Data[0], Data[1], Data[2], Data[3], ThID:1 Data[4], Data[5], Data[6], Data[7], ThID:2 Data[8], Data[9], Data[10], ThID:3 Data[11], Data[12], Data[13], ThID:4 Data[14], Data[15], Data[16], ThID:5 Data[17], Data[18], Data[19],