Share this page
Share this page E-mail this page Print this page RSS feeds
Home > Projects > ORCS - Object-Based Runtime for Concurrent Systems
ORCS - Object-Based Runtime for Concurrent Systems

The ORCS project introduces a novel programming model for concurrent applications. It provides programmers with a simple, yet powerful and efficient way to safely share data between concurrent tasks. Our prototype library is written in C# and aimed at game programmers.

Who cares?

To realize the performance potential of multiple cores, software developers must architect their programs for concurrency. Unfortunately, threads and locks are difficult to use efficiently and correctly. ORCS' lightweight software transactions are an attractive alternative for programmers that want to tap into the performance potential of multicores without devising complicated locking protocols.

With ORCS, programmers first specify the tasks that execute in each frame. Then, they wrap the shared data to make it thread-safe, using one of the provided templates (on the level of fields, objects, or collections). ORCS then automatically executes the tasks concurrently and in isolation. Each task operates on its private snapshot of the data; the replicas are automatically synchronized at the end of each frame. Tasks are scheduled dynamically for effective load balancing on multiprocessors.

Unlike more conventional transactional memory implementations, ORCS never rolls transactions back. Instead, the programmers may provide merge functions that allow reconciliation of conflicting updates at the end of each frame. These merge functions guarantee consistency on the level of individual objects.

Project Status

We have a working prototype and a functional demo of a full-featured game application called SpaceWars3D.

Publications

Resources