
Some examples demonstrate the extreme vulnerability to errors that can result from conflicts when multiple processes access shared resources. Afterwards, notations for concurrent instructions are introduced and the process concept is introduced informally. It is shown that the magnitudes of the number of possible sequences of concurrent programs exceed any human imagination. In this chapter, central concepts of concurrent programming are defined and conceptual differences to sequential programming are worked out. In the 4th edition of the textbook, which is aimed at students of computer science, some errors have been corrected, smaller extensions have been included and adjustments due to a change to Go have been made. The chapters on locks, semaphores, monitors and network-wide message passing also present some basic approaches to programming in C and Java. Due to its simple syntax, Go also offers the advantage that readers without prior knowledge can follow the basic concepts. The algorithms are formulated in the Go programming language, which can be used to express numerous synchronization concepts. This makes learning easier, because the concepts presented can be compared more easily with the language resources. In order to make readers familiar with the concepts, the author always takes up the same classic examples. These include locks, semaphores, fairness and deadlocks, monitors, local and network-wide message passing, networks as graphs, network exploration, distributed depth and breadth first search, and the selection of a leader in networks. It systematically presents basic concepts for the synchronization and communication of concurrent processes.
#A NON SEQUENTIAL PROCESS SOFTWARE#
After a short chapter on basic aspects of software engineering and its realization in Go, this book introduces to nonsequential and distributed programming with Go.
