ArsTechnica’s the only news website I visit frequently, as though I’m busy, I need to “keep up with the joneses” as they say.
This article on multithreading, (or rather, the industries lack thereof) made me think of Novaleaf’s solution. I’ll shortly describe what we have now, why we are not using it, and what we have an idea for in the future….
What we have now
Thankfully I consider multicore development one of my strong suits. By strong, I mean 2 years ago I wrote a lock-free queue, logically verified that it was free of race conditions, and experimentally stress-tested on a 4 proc machine.
So a few years ago, I took a few months and wrote a task parallel framework. This was before the .NET’s TPF and other thread-safe collections, so I was quite a bit “ahead of my time”. It all works great, and we still have it today.
Why we are not using it
The problem I discovered however, as the ars-technica article describes, is that the lack of multicore experience/understanding by my dev team, coupled with the disasterous side-effects we’d encounter if I forced them to learn on our project, led me to shelf the asynchronous framework I worked so hard to perfect.
Also, my implementation used classes (objects) for the tasks, and that may be a potential disaster on the GC weak CF.NET (xbox360).
So, I put it aside for later.
What we will do in the future
In “the future”, once we finish our next title (using multithreading only on specific systems), we’ll be re-introducing the asynchronous task framework I developed, however will need to make it “noob proof” to guarantee inexperienced devs won’t die a horrible death. (I planned a Dependency tree framework as a solution)
Architecturally, I’m happy with my asynchronous ideas, and man, I wish we could integrate it now… but, first thing’s first, get our next game done :)