I just re-learned a valuable lesson. I was preparing for an upcoming class that I’m teaching on .NET for my team, and I was reviewing the .NET Garbage collector. I thought that I’d throw together a few quick apps using WeakReferences to show when objects are garbage collected, but I wasn’t getting the behavior I was expecting. Unless an object was explicitly set to null, the objects were not being collected. I was amazed, as this really isn’t how GC is documented, and both of my Heroes, Software Legend Jeffrey Richter and Father of COM (is Love) Don Box clearly state in their books that objects are eligible for GC after their last reference.
As I've posted before, MSBuild support is noticeably absent in the next version of Visual C++. With all of Microsoft's hype over MSBuild, this is a glaring omission. As a new blogger, and member of the Visual C++ IDE's project/build system team, perhaps Josh can help explain this?
I've read quite a few articles and books that proclaim the benefits of multi-threading, and many people admire the beauty of a nicely threaded program. I agree fully - a well-implemented threading server certainly can reap great performance benefits. SQL Server is a wonderful example of this. So much thought was put into threading in SQL Server that they implemented their own thread scheduler, pre-empting the OS threading model through some quite clever trickery.