Concurrent Programming Concepts
ACM Computing Surveys (CSUR)
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Monitors: an operating system structuring concept
Communications of the ACM
Synchronization of communicating processes
Communications of the ACM
Letters to the editor: go to statement considered harmful
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Operating system principles
The specification of process synchronization by path expressions
Operating Systems, Proceedings of an International Symposium
Calculating properties of programs by valuations on specific models
Proceedings of ACM conference on Proving assertions about programs
Automatic program verification I: a logical basis and its implementation.
Automatic program verification I: a logical basis and its implementation.
Toward a man-machine system for proving program correctness
Toward a man-machine system for proving program correctness
A program verifier
An alternative to event queues for synchronization in monitors
Communications of the ACM
Communications of the ACM
Hardware support for concurrent programming in loosely coupled multiprocessors
ISCA '78 Proceedings of the 5th annual symposium on Computer architecture
Hi-index | 0.03 |
A method is presented for programming correct and efficient cooperation in a set of sequential modules, on the basis of an invariant assertion, by means of formal and static deductions. For each sequential module, the pre- and post-assertions are computed from the invariant. Whereas the pre-assertion gives the synchronizing condition required before execution in order to preserve the invariant, the post-assertion expresses the “contribution” of this execution. Other assertions, called firing conditions, are derived which connect that contribution to the needs of waiting processes as expressed in their synchronizing conditions. A sequential module and its synchronizing and firing conditions are then integrated in a high-level synchronizing construct close to conditional critical regions, but allowing explicit control over the synchronizing conditions to be reevaluated at the exit for process resumption. Three levels of static elimination of useless condition reevaluations are then presented. These eliminations essentially use the information contained in firing conditions; they are shown to preserve partial correctness. The combined use of the notation and of the techniques proposed is illustrated through three examples.