Multithreaded programs can be considerably more powerful than single threaded applications, as multiple discrete operations can be performed in parallel. Writing a multithreaded program can be very difficult though and if not done properly, errors can build up to the point of causing the system to crash. Researchers at Columbia University have created a piece of software called Peregrine to prevent errors by better control over the path the threads take within a processor. Part of the problem with multithreaded programs is a nondeterministic situation where the paths used for each thread are randomly chosen, can cause collisions. These collisions can cause incorrect values to be returned, and potentially the software to crash.
Peregrine decides the best path for multiple threads to take and intelligently selects where a thread can move its information from one path to another. When an operation completes correctly, the software will remember the paths it used, so it will not have to recalculate them in the future. A major benefit to this software is the fact it can be implemented with current hardware and programming language.