The function nni_get_interface
returns a pointer to an instance of the Natural
Native Interface. One interface instance can host one Natural session at a time. An
application initializes a Natural session by calling the function nni_initialize
on a given interface
instance. It uninitializes the Natural session by calling nni_uninitialize
on that interface
instance. After that it can initialize a new Natural session on the same interface
instance.
It is implementation dependent if multiple interface instances and thus multiple Natural
sessions can be maintained per process or per thread. In the current implementation of
Natural for Windows or Linux, one process can host one Natural session at a time.
Consequently, every call to nni_get_interface
in one process yields the same interface
instance. However, this unique interface instance can be used alternating by several
concurrently running threads. The thread synchronization is implicitly performed by the
interface functions themselves. Optionally it can be performed by the application
explicitly. The interface provides the required synchronization functions nni_enter
, nni_try_enter
and nni_leave
.