This PR combines most of Redeem's threads sitting in select-loops into an IOManager class. This reduces the number of OS threads we need overall and makes shutdown nearly instantaneous. Additionally, the Heaters (which do still need threads) are waiting on Events now, which let them stop quickly as well.
This PR combines most of Redeem's threads sitting in select-loops into an IOManager class. This reduces the number of OS threads we need overall and makes shutdown nearly instantaneous. Additionally, the Heaters (which do still need threads) are waiting on Events now, which let them stop quickly as well.