Try out Harmony
Formulated in 1965 by Edsger Dijkstra as a student exam exercise, presented in terms of computers competing for access to tape drive peripherals.
An algorithm for mutual exclusion that allows two or more processes to share a single-use resource without conflict, using only shared memory for communication.
A synchronization construct that allows threads to have both mutual exclusion and the ability to wait (block) for a certain condition to become false.
One of the most common problems in concurrency, we want to prevent more than one thread modifying the shared resource simultaneously and allow for two or more readers to access the shared resource at the same time.
It would make for quite a poor banking experience to allow dollars to simply go missing or be created from thin air, however that's exactly what might happen with poorly designed concurrent programs.
A technique originally discovered, but not recommended by, Tony Hoare. It uses a set of binary semaphores the sum of which never exceeds 1
What is Harmony?
Concurrent programming is hard to get right. A deadlock might occur only once in a million executions, caused by the most esoteric of circumstances. Harmony makes finding those bugs easy.
- Checks every possible interleaving of processes
- Detects non-compilance with invariants
- Provides the shortest path to a failing execution
Learning programming in Harmony should be straightforward to those familiar with Python or similar languages. In addition to our online documentation, we provide a textbook in PDF form with many programming examples including Peterson's Algorithm, reader/writer locks, and split binary semaphores.Read more
Our Primary Contributors
Robbert van RenesseCreator and Advisor to the Harmony Project
Anthony YangCompilers & Data Output
William MaCompilers & Visualization
Kevin SunDesign & Documentation
Renyu LiGraphical User Interface
Past Team Members
Shi Chong Zhao
433 Gates Hall, Ithaca, NY 14853
+1 (607) 255-1021