How bad is the following idea?
class Calc
{
void addThread()
{
 Data data;
 data = new Data();
}
void run()
{
if ( hardware threads > current threadcount)
{
 addThread();
}
//wait for some signal
//run calculations on data / threads
}
}
Calc mainCalc;
mainCalc = new Calc();
mainCalc.run();