{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,11,13]],"date-time":"2023-11-13T00:35:15Z","timestamp":1699835715609},"reference-count":15,"publisher":"Wiley","issue":"11","license":[{"start":{"date-parts":[[2006,10,27]],"date-time":"2006-10-27T00:00:00Z","timestamp":1161907200000},"content-version":"vor","delay-in-days":9126,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1981,11]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The design of a communicating sequential process language is presented, featuring a parallel command, communication by message passing and the use of the guarded command as a means of introducing and controlling non\u2010determinism. The language described here incorporates a number of new proposals regarding communications between sequential processes. The principal proposal is that messages are to be selected for reception by a receiving process solely on the basis of their type and arrival order within type; in particular, the identity of the sending process does not influence message reception. This results in a greater degree of parallelism and non\u2010determinism, which is useful to both the programmer and the language implementor. Also a hierarchichal composition regime is proposed, which gives communications significance to the organization of subprocess hierarchies; this promotes an independence of specification of program components through information hiding properties. The language implementation is described, and several aspects are of particular interest: the design of a process scheduler in a non\u2010deterministic situation leads to some interesting optimizations, as does the design of a message handler in the case where the communicating processes can access the same memory. Finally, example programs are given to illustrate some of the novel features of the language.<\/jats:p>","DOI":"10.1002\/spe.4380111105","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T11:52:24Z","timestamp":1163764344000},"page":"1215-1234","source":"Crossref","is-referenced-by-count":13,"title":["A communicating sequential process language and implementation"],"prefix":"10.1002","volume":"11","author":[{"given":"T. J.","family":"Roper","sequence":"first","affiliation":[]},{"given":"C. J.","family":"Barter","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2006,10,27]]},"reference":[{"key":"e_1_2_1_2_2","first-page":"43","volume-title":"Programming Languages","author":"Dijkstra E. W.","year":"1968"},{"key":"e_1_2_1_3_2","volume-title":"Operating System Principles","author":"Brinch\u2010Hansen P.","year":"1973"},{"key":"e_1_2_1_4_2","first-page":"61","volume-title":"Operating Systems Techniques","author":"Hoare C. A. R.","year":"1972"},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1975.6312840"},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/355620.361161"},{"key":"e_1_2_1_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/359576.359585"},{"key":"e_1_2_1_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/360933.360975"},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/359114.359127"},{"key":"e_1_2_1_10_2","unstructured":"C. J.Barter \u2018Communications between sequential processes\u2019 TR34 Comptr Sci. Dept. U. of Rochester Rochester NY. 1978."},{"key":"e_1_2_1_11_2","unstructured":"C. J.Barter \u2018An exercise in message passing\u2019 Proc. 2nd Australian Computer Science Conference(1979) 124\u2013134."},{"key":"e_1_2_1_12_2","volume-title":"Language Design and Programming Methodology","author":"Welsh J.","year":"1980"},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4615-9984-5"},{"key":"e_1_2_1_14_2","unstructured":"N.Wirth \u2018Pascal\u2010S: a subset and its implementation\u2019 Berichte Nr. 12 Institut f\u00fcr Informatik Eidgen\u00f6ssische Technische Hochschule Z\u00fcrich Switzerland 1975."},{"key":"e_1_2_1_15_2","volume-title":"Algorithms + Data Structures = Programs","author":"Wirth N.","year":"1975"},{"key":"e_1_2_1_16_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380090205"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380111105","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380111105","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,11,12]],"date-time":"2023-11-12T05:59:34Z","timestamp":1699768774000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380111105"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1981,11]]},"references-count":15,"journal-issue":{"issue":"11","published-print":{"date-parts":[[1981,11]]}},"alternative-id":["10.1002\/spe.4380111105"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380111105","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1981,11]]}}}