default constructor launches a sane number of threads based on hardware capabilities
use atomic bool for stop flag
rename to hpp