C++ Thread
Ejemplo de como implementar threads con la libreria thread en c++
El programa debe calcular el area de circulos y triangulos por separado.
/* Version g++ 4.6.3 - Linux/Ubuntu 12.04
* Compilacion g++ qareas.cpp -o qarea -std=c++0x -pthread
*/
#include <iostream>
#include <stdlib.h>
#include <thread>
#define CIRCLES 10
#define TRIANGLES 10
using namespace std;
class Circle
{
public:
Circle(int r) : radio(r) {}
~Circle() {}
void circleArea(){ area = 3.14159 * (radio*radio); }
void showArea(){ cout<<"C -"<<radio<<" - "<<area<<endl; }
private:
int radio;
double area;
};
class Triangle
{
public:
Triangle(int b, int h) : base(b), high(h) {}
~Triangle(){ }
void triangleArea(){ area = ( base * high) / 2; }
void showArea(){ cout<<"T -"<<base<<" - "<<high<<" - "<<area; }
private:
int base, high;
double area;
};
void TrianglesArea(){
int i;
srand (time(NULL));
for(i = 0; i < TRIANGLES; i++){
Triangle* t = new Triangle(rand()%10+1,rand()%15+10);
t->triangleArea();
t->showArea();
delete t;
sleep(1);
}
}
void CirclesArea(){
int i;
srand (time(NULL));
for(i = 0; i < CIRCLES; i++){
Circle* c = new Circle(rand()%10+1);
c->circleArea();
c->showArea();
delete c;
sleep(1);
}
}
int main(void){
cout<<"Id Area"<<endl;
thread circles(CirclesArea);
thread triangles(TrianglesArea);
circles.join();
triangles.join();
return 0;
}