In
computer science, concurrency is a property of systems in which several
computational processes are executing at the same time, and potentially interacting with each other. The study of concurrency encompasses a broad range of systems, from tightly-coupled, largely synchronous
parallel computing systems, to loosely-coupled, largely asynchronous
distributed systems. The concurrent processes may be executing truly simultaneously, in the case that they run on separate processors, or their execution steps may be interleaved to produce the appearance of concurrency, as in the case of separate processes running on a
multitasking system. Because the processes in a concurrent system can interact with each other while they are executing, the number of possible execution paths in the system can be extremely large, and the resulting behavior can be very complex. The difficulties associated with concurrency have been tackled both through the construction of languages and concepts to make the complexity of concurrent execution manageable, and through the development of theories for reasoning about interacting concurrent processes.
See more at Wikipedia.org...