[This is preliminary documentation and is subject to change.]

Enumeration describing the level of threading support provided by the MPI implementation. The MPI environment should be initialized with the minimum threading support required for your application, because additional threading support can have a negative impact on performance. The four options providing monotonically-increasing levels of freedom for the MPI program. Thus, a program implemented based on the Threading.Single semantics will work perfectly well (although perhaps less efficiently) with Threading.Multiple.

Namespace:  MPI
Assembly:  MPI (in MPI.dll)
Version: 0.9.0.0 (0.9.0.0)

Syntax

C#
public enum Threading
Visual Basic (Declaration)
Public Enumeration Threading
Visual C++
public enum class Threading

Members

Member nameDescription
Single
The program is single-threaded, and does not ever create additional threads (even those that don't use MPI).
Funneled
The program is multi-threaded, but only one of those threads (the main thread) will make calls into the MPI library. Thus, all of the MPI calls are "funneled" into that one thread. One can determine if the currently-executing thread is the main thread via IsMainThread.
Serialized
The program is multi-threaded, and more than one thread will make calls into the MPI library. However, these calls into MPI are "serialized", in that no two threads will call the MPI library at the same time. This mode essentially requires the user program to have the equivalent of a global lock around all calls to MPI.
Multiple
The program is multi-threaded, and more than one thread will make calls into the MPI library. The program is free to call the MPI library routines from any thread at any time, including having multiple threads calling MPI concurrently. Note that this level of threading is not supported by MS MPI.

See Also