{"title":"Solving the Santa Claus Problem: a Comparison of Various Concurrent Programming Techniques","authors":"J. Hurt, J. Pedersen","doi":"10.3233/978-1-58603-907-3-381","DOIUrl":"https://doi.org/10.3233/978-1-58603-907-3-381","url":null,"abstract":"The Santa Claus problem provides an excellent exercise in concurrent pro- gramming and can be used to show the simplicity or complexity of solving problems using a particular set of concurrency mechanisms and offers a comparison of these mechanisms. Shared-memory constructs, message passing constructs, and process ori- ented constructs will be used in various programming languages to solve the Santa Claus Problem. Various concurrency mechanisms available will be examined and an- alyzed as to their respective strengths and weaknesses.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114843979","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"JCSPre: the Robot Edition to Control LEGO NXT Robots","authors":"J. Kerridge, A. Panayotopoulos, Patrick Lismore","doi":"10.3233/978-1-58603-907-3-255","DOIUrl":"https://doi.org/10.3233/978-1-58603-907-3-255","url":null,"abstract":"JCSPre is a highly reduced version of the JCSP (Communicating Sequential Processes for Java) parallel programming environment. JCSPre has been implemented on a LEGO Mindstorms NXT brick using the LeJOS Java runtime environment. The LeJOS environment provides an abstraction for the NXT Robot in terms of Sensors, Sensor Ports and Motors, amongst others. In the implementation described these abstractions have been converted into the equivalent active component that is much easier to incorporate into a parallel robot controller. Their use in a simple line following robot is described, thereby demonstrating the ease with which robot controllers can be built using parallel programming principles. As a further demonstration we show how the line following robot controls a slave robot by means of Bluetooth communications.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130039943","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Translating ETC to LLVM Assembly","authors":"Carl G. Ritson","doi":"10.3233/978-1-60750-065-0-145","DOIUrl":"https://doi.org/10.3233/978-1-60750-065-0-145","url":null,"abstract":"The LLVM compiler infrastructure project provides a machine independent virtual instruction set, along with tools for its optimisation and compilation to a wide range of machine architectures. Compiler writers can use the LLVM’s tools and instruction set to simplify the task of supporting multiple hardware/software platforms. In this paper we present an exploration of translation from stack-based Extended Transputer Code (ETC) to SSA-based LLVM assembly language. This work is intended to be a stepping stone towards direct compilation of occam-π and similar languages to LLVM’s instruction set.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"16 33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131729090","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Types, Orthogonality and Genericity: Some Tools for Communicating Process Architectures","authors":"S. Abramsky","doi":"10.3233/978-1-58603-907-3-1","DOIUrl":"https://doi.org/10.3233/978-1-58603-907-3-1","url":null,"abstract":"samson@comlab.ox.ac.ukAbstract. We shall develop a simple and natural formalization of the idea of client-server architectures, and, based on this, define a notion of orthogonality betweenclients and servers, which embodies strong correctness properties, and exposes therich logical structure inherent in such systems. Then we generalize from pure clientsand servers to components, which provide some services to the environment, and re-quire others from it. We identify the key notion of composition of such components, inwhich some of the services required by one component are supplied by another. Thisallows complex systems to be built from ultimately simple components. We show thatthis has the logical form of the Cut rule, a fundamental principle of logic, and that itcan be enriched with a suitable notion of behavioural types based on orthogonality, insuch a way that correctness properties are preserved by composition. We also developthe basic ideas of how logical constructions can be used to develop structured inter-faces for systems, with operations corresponding to logical rules. Finally, we showhow the setting can be enhanced, and made more robust and expressive, by usingnames (as in the π-calculus) to allow clients to bind dynamically to generic instancesof services.Keywords. client, server, type, orthogonality, genericity, interaction.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"443 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131532672","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Programming the CELL-BE using CSP","authors":"K. Skovhede, Morten N. Larsen, B. Vinter","doi":"10.3233/978-1-60750-774-1-55","DOIUrl":"https://doi.org/10.3233/978-1-60750-774-1-55","url":null,"abstract":"The current trend in processor design seems to focus on using multiple cores, similar to a cluster-on-a-chip model. These process ors are generally fast and power efficient, but due to their highly parallel nature, the y are notoriously difficult to program for most scientists. One such processor is the CEL L broadband engine (CELL-BE) which is known for its high performance, but also f or a complex programming model which makes it difficult to exploit the architectu re to its full potential. To address this difficulty, this paper proposes to change the programming model to use the principles of CSP design, thus making it simpler to pr ogram the CELL-BE and avoid livelocks, deadlocks and race conditions. The CSP model described here comprises a thread library for the synergistic processing e lem nts (SPEs) and a simple channel based communication interface. To examine the s calability of the implementation, experiments are performed with both scientific c omputational cores and synthetic workloads. The implemented CSP model has a simple API and is shown to scale well for problems with significant computational requ irements.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125075362","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"PyCSP Revisited","authors":"B. Vinter, J. Bjørndalen, R. M. Friborg","doi":"10.3233/978-1-60750-065-0-263","DOIUrl":"https://doi.org/10.3233/978-1-60750-065-0-263","url":null,"abstract":"PyCSP was introduced two years ago and has since been used by a number of programmers, especially students. The original motivation behind PyCSP was a conviction that both Python and CSP are tools that are especially well suited for programmers and scientists in other fields than computer science. Working under this premise the original PyCSP was very similar to JCSP and the motivation was simply to provide CSP to the Python community in the JCSP tradition. After two years we have concluded that PyCSP is indeed a usable tool for the target users; however many of them have raised some of the same issues with PyCSP as with JCSP. The many channel types, lack of output guards and external choice wrapped in the select-thenexecute mechanism were frequent complaints. In this work we revisit PyCSP and address the issues that have been raised. The result is a much simpler PyCSP with only one channel type, support for output guards, and external choice that is closer to that of occam than JCSP.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130399007","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Communicating Scala Objects","authors":"B. Sufrin","doi":"10.3233/978-1-58603-907-3-35","DOIUrl":"https://doi.org/10.3233/978-1-58603-907-3-35","url":null,"abstract":"In this paper we introduce the core features of CSO (Communicating Scala Objects) - a notationally convenient embedding of the essence of occam in a mod- ern, generically typed, object-oriented programming language that is compiled to Java Virtual Machine (JVM) code. Initially inspired by an early release of JCSP, CSO goes beyond JCSP expressively in some respects, including the provision of a unitary ex- tended rendezvous notation and appropriate treatment of subtype variance in channels and ports. Similarities with recent versions of JCSP include the treatment of channel ends (we call them ports) as parameterized types. Ports and channels may be trans- mitted on channels (including inter-JVM channels), provided that an obvious design rule - the ownership rule - is obeyed. Significant differences with recent versions of JCSP include a treatment of network termination that is significantly simpler than the \"poisoning\" approach (perhaps at the cost of reduced programming convenience), and the provision of a family of type-parameterized channel implementations with perfor- mance that obviates the need for the special-purpose scalar-typed channel implemen- tations provided by JCSP. On standard benchmarks such as Commstime, CSO com- munication performance is close to or better than that of JCSP and Scala's Actors library.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130557881","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"JCSP Agents-Based Service Discovery for Pervasive Computing","authors":"A. Kosek, J. Kerridge, A. Syed, A. Armitage","doi":"10.3233/978-1-60750-065-0-363","DOIUrl":"https://doi.org/10.3233/978-1-60750-065-0-363","url":null,"abstract":"Device and service discovery is a very important topic when considering pervasive environments. The discovery mechanism is required to work in networks with dynamic topology and on limited software, and be able to accept different device descriptions. This paper presents a service and device discovery mechanism using JCSP agents and the JCSP network package jcsp.net2.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"81 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128609164","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"How to Make a Process Invisible","authors":"N. Brown","doi":"10.3233/978-1-58603-907-3-445","DOIUrl":"https://doi.org/10.3233/978-1-58603-907-3-445","url":null,"abstract":"A contrast enhancement filter having antistatic and antireflection properties is disclosed. The article comprises a plastic support sheet carrying on one side thereof a layer of indium tin oxide, and superposed upon said layer, an antireflection layer. A light-polarizing element is affixed to the opposed side thereof. The contrast enhancement filter can be used for the reduction of specular glare from the surface of cathode ray tubes, computer display screens and the like.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125899748","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Prioritised Choice over Multiway Synchronisation","authors":"Douglas N. Warren","doi":"10.3233/978-1-60750-774-1-87","DOIUrl":"https://doi.org/10.3233/978-1-60750-774-1-87","url":null,"abstract":"Previous algorithms for resolving choice over multiway synchronisations have been incompatible with the notion of priority. This paper discusses some of the problems resulting from this limitation and offers a subtle expansion of the definition of priority to make choice meaningful when multiway events are involved. Presented in this paper is a prototype extension to the JCSP library that enables prioritised choice over multiway synchronisations and which is compatible with existing JCSP Guards. Also discussed are some of the practical applications for this algorithm as well as its comparative performance.","PeriodicalId":246267,"journal":{"name":"Communicating Process Architectures Conference","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115246552","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}