How does X10 deal with concurrency?
X10 supports two levels of concurrency. The first level corresponds to concurrency within a single shared-memory process, which is represented by an X10 Place. Usually, you would use one Place per shared memory multiprocessor. The main construct for concurrency within a Place is the X10 “async” construct. The second level of X10 concurrency supports parallelism across Places, or analogously, across processes that do not share memory. Usually, this would correspond to concurrency across nodes in a cluster of workstations. The main construct for managing such concurrency in X10 is the “at” construct. Additionally, X10 provides various libraries and features to support particular concurrent operations and data structures, such as reductions and distributed arrays.