With a large amount of data all around us, our computer/processing systems are striving for performance. With multicore architecture and distributed computing, we are achieving high performance with acceptable availability of services. But this cannot be taken for granted; we have come to a point where we already have mechanisms to deal with problems that arise due to either incapability of systems or the programming models we are using.
Due to the advent of multicore architecture, our systems are capable of processing a large amount of data with high performance. But there is a fault in our programming models, which we use to mutate states, and at the same time use several threads to vary the states present in our programs. This has given us a reason to think.
Two or more threads trying to process a particular shared state might cause a deadlock...