100 Introduction to Concurrency in Programming Languages
Role-expressiveness
This dimension measures how readily the purpose of an entity can be in-
ferred. For example, compare the code in Listings 5.1 and 5.2. In the POSIX
threads case, one must identify the locks, their acquisition and release, and
the code and data encapsulated within the region where the lock is held to
infer what the critical section is that they are protecting. On the other hand,
the OpenMP case makes the critical section explicit by prefacing the code
block with the critical directive. We would reason that these two systems
would score differently when measured for role-expressiveness.
Error proneness
This dimension is fairly clear by its name. An error prone system invites
mistak ...