The Wolfram Language provides not only automatic parallelization capabilities, but also a full built-in symbolic language for specifying concurrent computation.

Concurrent Evaluation

ParallelSubmit submit expressions to be evaluated concurrently

WaitAll wait for all concurrent evaluations to finish

WaitNext wait for the next of a list of concurrent evaluations to finish

EvaluationObject symbolic representation of an expression submitted for evaluation

Communication & Synchronization »

SetSharedVariable specify symbols with values to synchronize across subkernels

SetSharedFunction specify functions whose evaluations are to be synchronized

UnsetShared stop variables or functions being shared

WithLock synchronize concurrent access using lock files

CriticalSection synchronize concurrent access using lock variables

Configuration Information »

$KernelCount number of running kernels, degree of parallelism

$KernelID a unique positive integer value assigned to each parallel kernel