blob: 935b4224d8bb61bbb036e65f0502a3cc9d4152ed [file] [log] [blame]
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "../xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="../css/ot.css" />
<link rel="stylesheet" type="text/css" href="../css/otjld.css" />
<title>OT/J Language Definition v1.3</title>
</head>
<body class="otdt">
<div id="content">
<table class="nav">
<tr>
<td class="back"><a id="top"></a><a href="s5.1.html" rel="prev">&lt;&lt;&nbsp;&sect;5.1&nbsp;Effect of team activation</a></td>
<td class="top"><a href="index.html" rel="contents">&uarr;&nbsp;Table of Contents&nbsp;&uarr;</a></td>
<td class="next"><a href="s5.3.html" rel="next">&sect;5.3&nbsp;Implicit team activation&nbsp;&gt;&gt;</a></td>
</tr>
</table>
<div class="breadcrumb"><a class="nav" href="s5.html" rel="section">&sect;5&nbsp;Team Activation</a></div>
<div class="sect depth2" id="s5.2">
<h2 class="sect">&sect;5.2&nbsp;Explicit team activation<a class="img" href="s5.2.html"
title="PermaLink to &sect;5.2&nbsp;Explicit team activation"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png"
alt="" /></a></h2>
<div class="subsect depth3" id="s5.2.a">
<h4 class="subsect">(a)&nbsp;<span class="title">Activation block</span><a class="img" href="s5.2.a.html" title="PermaLink to (a)&nbsp;Activation block"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png"
alt="" /></a></h4>
<p>A team can be activated thread local by the block construct</p>
<div class="listing plain"><pre><b>within</b> (myTeam) { <i>stmts</i> }</pre></div>
<p>If <em>stmts</em> has only one statement this can be abbreviated to
</p>
<div class="listing plain"><pre><b>within</b> (myTeam) <i>stmt</i></pre></div>
<p>In these statements, <code>myTeam</code> must denote a team instance.
For the time of executing this block, this team instance is activated for the current thread,
which has entered the within block.
</p>
<p>The <code>within</code> block statement guarantees that it leaves
the team in exactly the same activation state as it was in when
entering this block. This includes the cases of exceptions, meaning
that deactivation will also occur if the execution of the block
terminates abnormally.
</p>
</div>
<div class="subsect depth3" id="s5.2.b">
<h4 class="subsect">(b)&nbsp;<span class="title">Imperative activation</span><a class="img" href="s5.2.b.html"
title="PermaLink to (b)&nbsp;Imperative activation"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png"
alt="" /></a></h4>
<p>Each team class implicitly provides methods from the predefined interface
<code>org.objectteams.ITeam</code> (super interface of all team classes) to control team
activation disregarding the block structure of the program. The methods <code>activate()</code>
and <code>deactivate()</code> are used to activate and deactivate a team instance for
the current thread.<br />
If a team should be de-/activated for another thread this can be done by the methods
<code>activate(Thread aThread)</code> and <code>deactivate(Thread aThread)</code>.
In order to achieve global activation for all threads the predefined constant
<code>org.objectteams.Team.ALL_THREADS</code> is passed to these methods (e.g.
<code>activate(Team.ALL_THREADS)</code>).<br />
Note, that this methods make no guarantees with respect to exceptions.
</p>
</div>
<div class="subsect depth3" id="s5.2.c">
<h4 class="subsect">(c)&nbsp;<span class="title">Multiple and mixed activations</span><a class="img" href="s5.2.c.html"
title="PermaLink to (c)&nbsp;Multiple and mixed activations"><img style="vertical-align:text-top;margin-left:5px;" src="../images/permalink.png"
alt="" /></a></h4>
<ul>
<li>If <code>activate()</code> is invoked on a team instance
that has been explicitly activated before, this statement has
no effect at all (note the difference in <a href="s5.3.a.html" title="&sect;5.3.(a)&nbsp;Team level methods"
class="sect">&sect;5.3.(a)</a> below).
<br />
The same applies to deactivating an inactive team.
</li>
<li>If a team was already active when entering a <code>within</code>
block, it will remain active after leaving the block.
</li>
<li>If the team was active on entry of a <code>within</code> block
and if <code>deactivate()</code> is invoked on the same team
instance from within the <code>within</code> block,
leaving the block will re-activate the team.
</li>
</ul>
</div>
</div>
<table class="nav">
<tr>
<td class="back"><a href="s5.1.html" rel="prev">&lt;&lt;&nbsp;&sect;5.1&nbsp;Effect of team activation</a></td>
<td class="top"><a href="index.html" rel="contents">&uarr;&nbsp;Table of Contents&nbsp;&uarr;</a></td>
<td class="next"><a href="s5.3.html" rel="next">&sect;5.3&nbsp;Implicit team activation&nbsp;&gt;&gt;</a></td>
</tr>
</table>
<div class="breadcrumb"><a class="nav" href="s5.html" rel="section">&sect;5&nbsp;Team Activation</a></div>
</div>
<div id="footer">
<hr /><a class="w3c img" href="http://jigsaw.w3.org/css-validator/check/referer"
shape="rect"><img src="../images/valid-css2-blue.png" alt="Valid CSS!" height="31" width="88" /></a><a class="w3c img" href="http://validator.w3.org/check?uri=referer" shape="rect"><img src="../images/valid-xhtml10-blue.png" alt="Valid XHTML 1.0 Strict" height="31"
width="88" /></a><address>&copy; Stephan Herrmann, Christine Hundt, Marco Mosconi</address>
OT/J version 1.3 &mdash; last modified: 2011-05-15
</div>
</body>
</html>