этот вопрос, только на моей памяти, задавался уже несколько раз только на этом форуме %)
очень кратко:
1) в мапе хранить weak_ptr
2) любая асинхронная операция ввода/вывода должна создаваться инкрементом shared_ptr полученного от shared_from_this(), и завершаясь будет происходить декремент. таким образом, shared_ptr::count() будет говорить о кол-ве актуальных асинхронных операций.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)