modified asio workerthread