Monday, February 4, 2013

Mathematical Analysis of Concurrent System

When you created a multithreaded application(s) or other forms of parallel code, it must be rather scary to think about the possibility of deadlock, livelock, race condition or other bad things which could not be debugged "deterministically" like in serial code. 

Well, actually there's a "formal" way to verify your code by using a mathematical analysis known as Communicating Sequential Process (CSP) []. This field is a relatively new field and still very much an active research at the moment. 

Another approach is using Petri-Net to help analyzing the parallel code. But, at the moment, I'm trying to learn CSP as it seems to be better suited for embedded development.