Waltzing Through the Parallel Extensions June CTP: Known Issues
In the previous posts in this series, we have looked at a multitude of features provided by the PFX June CTP, including synchronization mechanisms, task-related features and new collection classes. However, there's also a large list of known issues with this release - it's obviously not production-ready, but nonetheless is a great milestone by the Parallel Extensions team. The most interesting issues mentioned are:
- TPL threads are not cleanly shut down when run in the Visual Studio test host. This effectively means that it's difficult to write unit tests for code that uses the Parallel Extensions. There's a work around by explicitly creating a TaskManager instance and explicitly disposing of it before letting the unit test terminate.
- Some PLINQ operations without order-preservation enabled (using the AsOrdered() method) exhibit meaningless behavior. For example, the Skip(N) operator without order-preservation will skip N elements in the randomly-ordered input, and not the first N elements. This is, of course, by design.
- Multi-core machines running a dedicated application or two might benefit from switching to the Server GC flavor if there's a significant amount of GC going on (the Server GC flavor performs garbage collections in parallel on all available processors, using dedicated GC threads, one per processor, yielding a potential significant collection speedup). The GC flavor used by the default CLR host is the Workstation Concurrent GC, and switching to Server GC is a wise recommendation even for applications that aren't using the Parallel Extensions at all. (Although there's a variety of good reasons why this is not the default.)