This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/Logtalk/manuals/refman/builtins/threaded1.html
pmoura 42aabce1bb Logtalk 2.30.7 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1973 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
2007-11-06 01:50:09 +00:00

87 lines
3.9 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type" content="application/xml+xhtml; charset=utf-8" />
<title>Logtalk built-in predicate: threaded/1</title>
<link rel="stylesheet" href="../../screen.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="../../print.css" type="text/css" media="print"/>
</head>
<body>
<div class="top-left">Logtalk reference manual</div>
<div class="top-right">Built-in predicate: threaded/1</div>
<div class="bottom-left"><span class="page"/></div>
<div class="bottom-right"><span class="page"/></div>
<div class="navtop"><a href="../../index.html">contents</a> &gt; <a href="../index.html">reference manual</a> &gt; <a href="../index.html#builtins">built-in predicates</a></div>
<h2 id="builtins_threaded1" class="codenp">threaded/1</h2>
<h4>Description</h4>
<pre>threaded(Goals)
threaded(Conjunction)
threaded(Disjunction)</pre>
<p>
Proves each goal in a conjunction (disjunction) of goals in its own thread. The argument can also be a conjunction (disjunction) of messages, either to <em>self</em> or to an explicit object. This predicate is deterministic and opaque to cuts.
</p>
<p>
When the argument is a conjunction of goals, a call to this predicate blocks until either all goals succeed, one of the goals fail, or one of the goals generate an exception; the failure of one of the goals or an exception on the execution of one of the goals results in the termination of the remaining threads. The predicate call is true <em>iff</em> all goals are true.
</p>
<p>
When the argument is a disjunction of goals, a call to this predicate blocks until either one of the goals succeeds, all the goals fail, or one of the goals generate an exception; the success of one of the goals or an exception on the execution of one of the goals results in the termination of the remaining threads. The predicate call is true <em>iff</em> one of the goals is true.
</p>
<p>
When the predicate argument is neither a conjunction not a disjunction of goals, no threads are used. In this case, the predicate call is equivalent to a <code>once/1</code> predicate call.
</p>
<h4>Template and modes</h4>
<pre>threaded(+callable)</pre>
<h4>Errors</h4>
<dl>
<dt>Goals is a variable:</dt>
<dd><code>instantiation_error</code></dd>
<dt>A goal in Goals is a variable:</dt>
<dd><code>instantiation_error</code></dd>
<dt>Goals is neither a variable nor a callable term:</dt>
<dd><code>type_error(callable, Goals)</code></dd>
<dt>A goal Goal in Goals is neither a variable nor a callable term:</dt>
<dd><code>type_error(callable, Goal)</code></dd>
</dl>
<h4>Examples</h4>
<dl>
<dt>Prove a conjunction of goals, each one in its own thread:</dt>
<dd><code>threaded((Goal, Goals))</code></dd>
<dt>Prove a conjunction of messages to <em>self</em>, each one in its own thread:</dt>
<dd><code>threaded(::(Message, Messages))</code></dd>
<dt>Prove a conjunction of messages to an object, each one in its own thread:</dt>
<dd><code>threaded(Object::(Message, Messages))</code></dd>
<dt>Prove a conjunction of objects receiving the same message, each one in its own thread:</dt>
<dd><code>threaded((Object, Objects)::Message)</code></dd>
</dl>
<div class="footer">
<div class="copyright">
<span>Copyright &copy; <a href="mailto:pmoura@logtalk.org">Paulo Moura</a> &mdash; <a href="http://logtalk.org">Logtalk.org</a></span><br/>
<span>Last updated on: October 24, 2007</span>
</div>
<div class="navbottom">
<span><a href="../index.html#builtins">previous</a> | <a href="../../glossary.html">glossary</a> | <a href="threaded_once1.html">next</a></span><br/>
<span><a href="http://validator.w3.org/check/referer">XHTML</a> + <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a></span>
</div>
</div>
</body>
</html>