Shutdown issues : Design for them
In any real asynchronous programming projects shutdown and cancel requires a real strategy from the beginning, often times I ended up designing shutdown after I am done with main line functionality. This causes real pain. When we are initially concentrating on the main functionality done we don’t concentrate much on how are going to implement shutdown and cancel functionalities. Sometimes while fixing shutdown bugs I end up redesigning a whole lot of code just to support a clean shutdown. Today while fixing a shutdown bug where we are supposed to handle a notification handle before we can cleanly die I ended up rewriting bunch of code. I should remember this for the future and put shutdown and cancel as work items and allocate time for them.