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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>The Life of an Array</TITLE>
<META NAME="description" CONTENT="The Life of an Array">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="users_guide.css">
<LINK REL="next" HREF="node64.html">
<LINK REL="previous" HREF="node62.html">
<LINK REL="up" HREF="node59.html">
<LINK REL="next" HREF="node64.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html1594"
HREF="node64.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1588"
HREF="node59.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1582"
HREF="node62.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1590"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html1592"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1595"
HREF="node64.html">The Language Bindings</A>
<B> Up:</B> <A NAME="tex2html1589"
HREF="node59.html">Arrays</A>
<B> Previous:</B> <A NAME="tex2html1583"
HREF="node62.html">Independent and borrowed arrays</A>
<B> <A NAME="tex2html1591"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html1593"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION02444000000000000000"></A>
<A NAME="2651"></A>
<BR>
The Life of an Array
</H2>
<P>
The existence of borrowed arrays causes the arrays to deviate from the
normal reference counting pattern. You may recall that all arrays are reference counted,
and an array's resources are reclaimed when the reference count goes to
zero. However, a borrowed array's array element data will disappear
whenever the source of the borrowed data determines that it should
regardless of the reference count in corresponding the SIDL array.
This behavior means that developers should consider any SIDL array
that they did not create themselves, for example incoming arguments to
methods, as potential borrowed arrays. When a method wants to keep a
copy of an array that might be a borrowed array, it should use the
<TT>smartCopy</TT><A NAME="2653"></A><A NAME="2654"></A> method documented below.
<P>
Here are some rules of thumb about the use of borrowed arrays:
<UL>
<LI>The creator of a borrowed array should guarantee that the data for the
borrowed array will exist through the duration of any method calls
using the borrowed array.
</LI>
<LI>Methods should not return a borrowed array as a return value or
<TT>out</TT> parameter unless the method can guarantee that the array
element data will be available until the process shuts down.
</LI>
<LI>There is a negligible performance cost when using <TT>smartCopy</TT>
when the array is not borrowed, and there is a huge correctness
benefit when the array is borrowed.
</LI>
</UL>
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html1594"
HREF="node64.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html1588"
HREF="node59.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html1582"
HREF="node62.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html1590"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html1592"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1595"
HREF="node64.html">The Language Bindings</A>
<B> Up:</B> <A NAME="tex2html1589"
HREF="node59.html">Arrays</A>
<B> Previous:</B> <A NAME="tex2html1583"
HREF="node62.html">Independent and borrowed arrays</A>
<B> <A NAME="tex2html1591"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html1593"
HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>
|