File: Function-Locking.html

package info (click to toggle)
octave 10.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 145,388 kB
  • sloc: cpp: 335,976; ansic: 82,241; fortran: 20,963; objc: 9,402; sh: 8,756; yacc: 4,392; lex: 4,333; perl: 1,544; java: 1,366; awk: 1,259; makefile: 659; xml: 192
file content (144 lines) | stat: -rw-r--r-- 7,485 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Function Locking (GNU Octave (version 10.3.0))</title>

<meta name="description" content="Function Locking (GNU Octave (version 10.3.0))">
<meta name="keywords" content="Function Locking (GNU Octave (version 10.3.0))">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta name="viewport" content="width=device-width,initial-scale=1">

<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Function-Files.html" rel="up" title="Function Files">
<link href="Function-Precedence.html" rel="next" title="Function Precedence">
<link href="Overloading-and-Autoloading.html" rel="prev" title="Overloading and Autoloading">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
div.example {margin-left: 3.2em}
span:hover a.copiable-link {visibility: visible}
strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
-->
</style>
<link rel="stylesheet" type="text/css" href="octave.css">


</head>

<body lang="en">
<div class="subsection-level-extent" id="Function-Locking">
<div class="nav-panel">
<p>
Next: <a href="Function-Precedence.html" accesskey="n" rel="next">Function Precedence</a>, Previous: <a href="Overloading-and-Autoloading.html" accesskey="p" rel="prev">Overloading and Autoloading</a>, Up: <a href="Function-Files.html" accesskey="u" rel="up">Function Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h4 class="subsection" id="Function-Locking-1"><span>11.10.6 Function Locking<a class="copiable-link" href="#Function-Locking-1"> &para;</a></span></h4>

<p>It is sometime desirable to lock a function into memory with the <code class="code">mlock</code>
function.  This is typically used for dynamically linked functions in
oct-files or mex-files that contain some initialization, and it is desirable
that calling <code class="code">clear</code> does not remove this initialization.
</p>
<p>As an example,
</p>
<div class="example">
<div class="group"><pre class="example-preformatted">function my_function ()
  mlock ();
  ...
endfunction
</pre></div></div>

<p>prevents <code class="code">my_function</code> from being removed from memory after it is called,
even if <code class="code">clear</code> is called.  It is possible to determine if a function is
locked into memory with the <code class="code">mislocked</code>, and to unlock a function with
<code class="code">munlock</code>, which the following code illustrates.
</p>
<div class="example">
<div class="group"><pre class="example-preformatted">my_function ();
mislocked (&quot;my_function&quot;)
&rArr; ans = 1
munlock (&quot;my_function&quot;);
mislocked (&quot;my_function&quot;)
&rArr; ans = 0
</pre></div></div>

<p>A common use of <code class="code">mlock</code> is to prevent persistent variables from being
removed from memory, as the following example shows:
</p>
<div class="example">
<div class="group"><pre class="example-preformatted">function count_calls ()
  mlock ();
  persistent calls = 0;
  printf (&quot;count_calls() has been called %d times\n&quot;, ++calls);
endfunction

count_calls ();
-| count_calls() has been called 1 times

clear count_calls
count_calls ();
-| count_calls() has been called 2 times
</pre></div></div>

<p><code class="code">mlock</code> might also be used to prevent changes to an m-file, such as in an
external editor, from having any effect in the current Octave session; A
similar effect can be had with the <code class="code">ignore_function_time_stamp</code> function.
</p>
<a class="anchor" id="XREFmlock"></a><span style="display:block; margin-top:-4.5ex;">&nbsp;</span>


<dl class="first-deftypefn">
<dt class="deftypefn" id="index-mlock"><span><strong class="def-name">mlock</strong> <code class="def-code-arguments">()</code><a class="copiable-link" href="#index-mlock"> &para;</a></span></dt>
<dd><p>Lock the current function into memory so that it can&rsquo;t be removed with
<code class="code">clear</code>.
</p>
<p><strong class="strong">See also:</strong> <a class="ref" href="#XREFmunlock">munlock</a>, <a class="ref" href="#XREFmislocked">mislocked</a>, <a class="ref" href="Keywords.html#XREFpersistent">persistent</a>, <a class="ref" href="Status-of-Variables.html#XREFclear">clear</a>.
</p></dd></dl>


<a class="anchor" id="XREFmunlock"></a><span style="display:block; margin-top:-4.5ex;">&nbsp;</span>


<dl class="first-deftypefn">
<dt class="deftypefn" id="index-munlock"><span><strong class="def-name">munlock</strong> <code class="def-code-arguments">()</code><a class="copiable-link" href="#index-munlock"> &para;</a></span></dt>
<dt class="deftypefnx def-cmd-deftypefn" id="index-munlock-1"><span><strong class="def-name">munlock</strong> <code class="def-code-arguments">(<var class="var">fcn</var>)</code><a class="copiable-link" href="#index-munlock-1"> &para;</a></span></dt>
<dd><p>Unlock the named function <var class="var">fcn</var> so that it may be removed from memory with
<code class="code">clear</code>.
</p>
<p>If no function is named then unlock the current function.
</p>
<p><strong class="strong">See also:</strong> <a class="ref" href="#XREFmlock">mlock</a>, <a class="ref" href="#XREFmislocked">mislocked</a>, <a class="ref" href="Keywords.html#XREFpersistent">persistent</a>, <a class="ref" href="Status-of-Variables.html#XREFclear">clear</a>.
</p></dd></dl>


<a class="anchor" id="XREFmislocked"></a><span style="display:block; margin-top:-4.5ex;">&nbsp;</span>


<dl class="first-deftypefn">
<dt class="deftypefn" id="index-mislocked"><span><code class="def-type"><var class="var">tf</var> =</code> <strong class="def-name">mislocked</strong> <code class="def-code-arguments">()</code><a class="copiable-link" href="#index-mislocked"> &para;</a></span></dt>
<dt class="deftypefnx def-cmd-deftypefn" id="index-mislocked-1"><span><code class="def-type"><var class="var">tf</var> =</code> <strong class="def-name">mislocked</strong> <code class="def-code-arguments">(<var class="var">fcn</var>)</code><a class="copiable-link" href="#index-mislocked-1"> &para;</a></span></dt>
<dd><p>Return true if the named function <var class="var">fcn</var> is locked in memory.
</p>
<p>If no function is named then return true if the current function is locked.
</p>
<p><strong class="strong">See also:</strong> <a class="ref" href="#XREFmlock">mlock</a>, <a class="ref" href="#XREFmunlock">munlock</a>, <a class="ref" href="Keywords.html#XREFpersistent">persistent</a>, <a class="ref" href="Status-of-Variables.html#XREFclear">clear</a>.
</p></dd></dl>


</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Function-Precedence.html">Function Precedence</a>, Previous: <a href="Overloading-and-Autoloading.html">Overloading and Autoloading</a>, Up: <a href="Function-Files.html">Function Files</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>