Saturday, April 25, 2009

The Future

We went over an interesting presentation from GDC09 regarding parallel coding strategies for game AI which covered a few basic strategies for making the main component interactions parallel to embrace the multi core and many core architectures. These include double buffering, messaging, asynchronous requests and Job scheduling. This is one major area which we'll need to focus on for the very near future of our development. The Zorvan engine is not threaded properly right now(except for resource loading and the potential to run in a different thread for the physics simulation loop) but one of the most important design goals for MAGE is a mutli threaded kernel.

An interesting software engineering concept which I came across to during the presentation that has good use for multi threaded Job scheduling systems is "Futures" and "Promises". These definitions have been thought about for a while now but they are finding practical uses these days with the heightened significance for parallel code. Languages which have supported this feature include Joule and E.

yzt pointed me out to the Boost implementation for the idea.

As always, the engineers rolling the boost library (probably aliens from outer space), are providing c++ implementations for any statement in the form of:" .... but c++ does not support this feature ! ", with Boost it can!

1 comment:

Anonymous said...

Interestingly enough, that particular proposal to Boost was rejected in favor of this one. The reasons given on the Boost mailing list was the fact that the person behind this second proposal was the maintainer of the Boost.Thread library and also that this proposal is already accepted for inclusion in the next C++ standard draft (the one after C++0x, I think.)
In any case, this implementation I've linked here is just a single header and an interesting read unto its own!