Solving the Santa Claus Problem: a Comparison of Various Concurrent Programming Techniques

@inproceedings{Hurt2008SolvingTS,
  title={Solving the Santa Claus Problem: a Comparison of Various Concurrent Programming Techniques},
  author={Jason Hurt and Jan B{\ae}kgaard Pedersen},
  booktitle={CPA},
  year={2008}
}
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… 

Tables from this paper

Refining Santa: An Exercise in Efficient Synchronization

This paper outlines the refinement steps to develop a highly efficient implementation with concurrent objects, starting from a simple specification, and the efficiency of the implementation is compared to those in other languages.

Santa Claus: Formal analysis of a process-oriented solution

It is proposed that process-oriented design, based on Hoare's algebra of Communicating Sequential Processes (CSP), leads to solutions that are manageable by novice programmers; that is, they are easy to design and maintain, that they are scalable for complexity, obviously correct, and relatively easy to verify using formal reasoning and/or model checkers.

Solving the Santa Claus Problem Over a Distributed Systeml

A working solution to the Santa Claus Problem is demonstrated that operates over a distributed system. It is designed and modelled using the client/server model to maintain a deadlock and livelock

References

SHOWING 1-10 OF 38 REFERENCES

Jingle Bells: Solving the Santa Claus Problem in Polyphonic C

A simple solution to the Santa Claus problem is presented in Polyphonic C, an extension of C with new concurrency constructs based on the Join calculus.

How to solve the Santa Claus problem

  • M. Ben-Ari
  • Computer Science
    Concurr. Pract. Exp.
  • 1998
The Santa Claus problem demonstrates that semaphores, designed for low-level mutual exclusion, are not appropriate for solving difficult concurrent programming problems.

Groovy Parallel! A Return to the Spirit of occam?

Four constructs are proposed that support the writing of parallel systems using the JCSP package and conclusions are drawn relating to the use of the constructs, particularly in a teaching and learning environment.

An ASM Specification of C# Threads and the .NET Memory Model

A high-level ASM model of C# threads and the .NET memory model is presented, which provides a sound basis for the development of multi-threaded applications in C#.

Model Checking Nonblocking MPI Programs

A way to apply model checking techniques to parallel programs that use the nonblocking primitives of the Message Passing Interface (MPI) as an extension to the model checker Spin called Mpi-Spin.

Process Oriented Design for Java: Concurrency for All

  • P. Welch
  • Computer Science
    International Conference on Computational Science
  • 2002
A process-oriented design pattern for concurrency is presented with a specific binding for Java, based on the algebra of Communicating Sequential Processes as captured by the JCSP library of Java classes.

Modular verification of multithreaded programs

A new exercise in concurrency

This article presents an exercise to be assigned whenever undergraduates are introduced to the concepts of concurrency and semaphores. It also presents several possible strategies to solve said

Communicating sequential processes

This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When

Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))

The book provides full coverage of all new features added since the previous edition, including generics, annotations, asserts, autoboxing, enums, for-each loops, variable arity methods, and static import clauses.