11.10.6 Function Locking

Last-modified: 2025-03-22 (土) 21:36:10

11.10.6 関数のロック

関数を関数とともにメモリにロックすることが望ましい場合があります。これは通常、何らかの初期化を含む oct ファイルまたは mex ファイル内の動的にリンクされた関数に使用され、呼び出しによってこの初期化が削除されない mlock ことが望ましいです。clear

例えば、

function my_function ()
 mlock ();
 ...
endfunction

my_functionは、 が呼び出された場合でも、呼び出された後に がメモリから削除されるのを防ぎます。 を使用して関数がメモリにロックされているかどうかを判断したり、 を使用して関数のロックを解除したり clearできます。次のコードでこれを示します。 mislockedmunlock

my_function ();
mislocked ("my_function")
⇒ ans = 1
munlock ("my_function");
mislocked ("my_function")
⇒ ans = 0

の一般的な使用法は、mlock次の例に示すように、永続変数がメモリから削除されるのを防ぐことです。

function count_calls ()
 mlock ();
 persistent calls = 0;
 printf ("count_calls() has been called %d times\n", ++calls);
endfunction
count_calls ();
-| count_calls() has been called 1 times
clear count_calls
count_calls ();
-| count_calls() has been called 2 times

mlock外部エディタなどでの m ファイルの変更が現在の Octave セッションに影響しないようにするためにも使用できます。ignore_function_time_stamp関数を使用しても同様の効果が得られます。

: mlock ()

現在の関数をメモリにロックして、clearで削除できないようにします 。

See also: munlock, mislocked, persistent, clear.

: munlock ()

: munlock (fcn)

名前付き関数fcn のロックを解除して、clearでメモリから削除できるようにします 。

関数の名前が指定されていない場合は、現在の関数のロックを解除します。

See also: mlock, mislocked, persistent, clear.

: tf = mislocked ()

: tf = mislocked (fcn)

名前付き関数fcn がメモリ内でロックされている場合は true を返します。

関数名が指定されていない場合、現在の関数がロックされていれば true を返します。

See also: mlock, munlock, persistent, clear.