CreateManagedLibraryExpression

CreateManagedLibraryExpression[mname,f]
creates a managed library expression by applying f to a positive integer ID associated with a registered manager with name mname.

DetailsDetails

  • The IDs generated for the manager with name mname start at 1 and follow sequentially until the manager is unregistered.
  • A manager is registered by using the LibraryLink callback function registerLibraryExpressionManager.

ExamplesExamplesopen allclose all

Basic Examples  (1)Basic Examples  (1)

Load example LibraryFunction objects that implement a simple linear congruential random generator:

In[1]:=
Click for copyable input

Create an instance of a linear congruential generator:

In[3]:=
Click for copyable input
Out[3]=

Set its parameters using the unique ID assigned by CreateManagedLibraryExpression:

In[4]:=
Click for copyable input

Generate two pseudorandom numbers from the instance:

In[5]:=
Click for copyable input
Out[5]=

Set up another instance and generate three numbers from it:

In[6]:=
Click for copyable input
Out[8]=

The first instance is available until the expression is no longer referenced:

In[9]:=
Click for copyable input
Out[9]=

The history expression Out will often keep references to an expression you may not be aware of. Extra references like this can be prevented by setting $HistoryLength=0 either in a session or inside of Block:

In[12]:=
Click for copyable input
Out[13]=

The variable g3 is the only reference to the managed library instance, so when g3 is unset, the library instance is freed and expressions with this ID will no longer work:

In[14]:=
Click for copyable input
Out[14]=

Note that the same does not work for g1 because it is referenced by Out:

In[17]:=
Click for copyable input
Out[18]=
Introduced in 2014
(10.0)