I have a problem related with threads when I try to calculate the sum of trapezoid for integration of x^2 using C++. Here is my example code :
#include<iostream>
#include <thread>
#include <vector>
#include <mutex>
using namespace std;
float y(float x)
{
return (x*x);
}
float result;
// Function to evaluate the value of integral
float trapezoid(float a, float b, int n)
{
float h = (b-a)/n;
float s = y(a)+y(b);
for (int i = 1; i < n; i++)
{
s += 2*y(a+i*h);
}
result += (h/2)*s;
}
// Driver program to test above function
int main()
{
const int num_threads = 3;
const int iteration = 600;
float lb = 0;
float hb = 0;
float task_ = 1/num_threads;
vector<thread> threads;
for(hb = 0; hb<1; hb+=task_){
threads.push_back(thread(&trapezoid,lb,hb,iteration));
lb=hb;
}
// Wait for all threads to finish
for (auto &thread : threads)
{
thread.join();
}
cout<<result<<endl;
return 0;
}
I try to divide the task into several parts and calculate them using C++ STL threads but I only get this :
do you know what is wrong with my code? I am still pretty much new on anything related with threads in C++..Any help for this is really appreciated.
Aucun commentaire:
Enregistrer un commentaire