First commit
This commit is contained in:
37
examples/sumnums.cpp
Normal file
37
examples/sumnums.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
#include "../include/ThreadPool_pthread.h"
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
|
||||
void* SumZeroToNumber(void* num)
|
||||
{
|
||||
long val = 0;
|
||||
for(long i = 0; i <= *static_cast<long*>(num); i++) {
|
||||
val += i;
|
||||
}
|
||||
*static_cast<long*>(num) = val;
|
||||
return NULL;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
std::vector<long> nums(10000);
|
||||
std::vector<long> numsResults(10000);
|
||||
try
|
||||
{
|
||||
ThreadPool_pthread pool(8); //num of cores
|
||||
for(unsigned i = 0; i < nums.size(); i++) {
|
||||
nums[i] = rand() % 1000;
|
||||
numsResults[i] = nums[i]; //this is just a copy to be passed and modified, while the original remains unchanged
|
||||
pool.push_task(SumZeroToNumber,static_cast<void*>(&numsResults[i]));
|
||||
}
|
||||
pool.finish();
|
||||
}
|
||||
catch(std::exception &ex)
|
||||
{
|
||||
std::cout<<"An exception was thrown while processing data. Exception says: " << ex.what() << std::endl;
|
||||
std::exit(1);
|
||||
}
|
||||
for (unsigned int i = 0; i < nums.size(); ++i) {
|
||||
std::cout<<"Sum from 0 to " << nums[i] << " is: " << numsResults[i] <<std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user