11.10.6函数锁定

有时需要使用将函数锁定到内存中mlock作用这通常用于包含一些初始化的动态链接函数inoct文件或mex文件,并且在调用时是可取的clear不会删除此初始化。

作为一个例子,

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

阻止my_function在调用后从内存中删除,即使clear被调用。可以使用确定函数是否锁定到内存中mislocked,并使用解锁函数munlock,下面的代码对此进行了说明。

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.

详见: munlock, mislocked, persistent, clear.

广告
 
: munlock ()
: munlock (fcn)

解锁命名函数fcn以便可以将其从存储器中删除clear.

如果未命名任何函数,则解锁当前函数。

详见: mlock, mislocked, persistent, clear.

广告
 
: tf = mislocked ()
: tf = mislocked (fcn)

如果命名函数为true,则返回truefcn被锁定在内存中。

如果没有命名任何函数,那么如果当前函数被锁定,则返回true。

详见: mlock, munlock, persistent, clear.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2