How to solve the Santa Claus problem

  title={How to solve the Santa Claus problem},
  author={Mordechai Ben-Ari},
  journal={Concurr. Pract. Exp.},
  • M. Ben-Ari
  • Published 1 May 1998
  • Computer Science
  • Concurr. Pract. Exp.
John Trono published a new exercise in concurrent programming—the Santa Claus problem—and provided a solution based on semaphores [12]. His solution is incorrect because it assumes that a process released from waiting on a semaphore will necessarily be scheduled for execution. We give a simple solution in Ada 95 using higher order synchronization primitives: protected objects and rendezvous. We then give solution in Java, though this solution is not as elegant as the Ada 95 solution because the… 

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

Various concurrency mechanisms available will be examined and examined as to their respective strengths and weaknesses and offers a comparison of these mechanisms.

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.

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

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.

Compiling CSP

This paper presents an altern a use for CSP, namely the compilation of CSP systems to executable code, in providing a means to experiment with relatively large C SP systems, possibly consisting millions of concurrent processes.

ProcessJ: A Possible Future of Process-Oriented Design

We propose ProcessJ as a new, more contemporary programming language that supports process-oriented design, which raises the level of abstraction and lowers the barrier of entry for parallel and

On the FaaS Track: Building Stateful Distributed Applications with Serverless Architectures

This work presents Crucial, a system to program highly-concurrent stateful applications with serverless architectures that keeps the simplicity of FaaS and allows to port effortlessly multi-threaded algorithms to this new environment.

A type safe state abstraction for coordination in Java-like languages

A feature for Java-like languages is suggested, which makes the state of a concurrent object explicit and supports the expression of the object’s behavior depending on the state it is currently in, and makes it easier to understand and develop concurrent programs.

Modern concurrency abstractions for C#

The design and implementation of the Polyphonic C language is described and examples of its use in addressing a range of concurrent programming problems are given.



Concurrency in ADA

The nature and uses of concurrent programming, object-oriented programming and tasking, and real-time programming in the Ada language are studied.

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

A Starvation-Free Solution to the Mutual Exclusion Problem

Monitors: an operating system structuring concept

This paper develops Brinch-Hansen's concept of a monitor as a method of structuring an operating system. It introduces a form of synchronization, describes a possible method of implementation in

Programming the Internet in Ada 95

  • S. Taft
  • Computer Science
  • 1996
The combination of the Ada 95 and Java technologies is found to be very natural and powerful, providing the best characteristics of both technologies, with essentially no loss in functionality.

The Java Language Specification

The Java Language Specification, Second Edition is the definitive technical reference for the Java programming language and provides complete, accurate, and detailed coverage of the syntax and semantics of the Java language.

Programming in Ada 95

This text introduces and highlights the important changes from ANSI 83 for the ADA 92 standard, including increased support for object-oriented programming, the introduction of a hierarchical library

The search for simplicity - essays in parallel programming

What do you do to start reading the search for simplicity essays in parallel programming? Searching the book that you love to read first or find an interesting book that will make you want to read?

Programming in ADA

Principles of concurrent and distributed programming

  • M. Ben-Ari
  • Computer Science
    PHI Series in computer science
  • 1990
This chapter discusses the implementation of the Ada Emulations, a distributed version of Concurrent Programming, and the problem of the Mutal Exclusion Problem.