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/threaded_race1.html

70 lines
3.0 KiB
HTML
Raw Normal View History

<?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_race/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_race/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 class="codenp">threaded_race/1<span id="builtins_threaded_race1"/></h2>
<h4>Description</h4>
<pre>threaded_race((Goal; Goals))</pre>
<p>
Prove a <em>disjunction</em> of goals asynchronously using a new thread. This call always succeeds. The call is equivalent to the <em>competing</em> calls of the individual goals: when one of the goals succeeds, the other ones are aborted (i.e. their threads are terminated). The result (of the first goal to succeed) is sent back to the thread of the object containing the call (<em>this</em>). The corresponding <code>threaded_exit/1</code> goal <strong>must</strong> match all the goals in the disjunction. This is useful when you have a set of different methods to solve a problem without knowing a priori which one will lead to the fastest result.
</p>
<h4>Template and modes</h4>
<pre>threaded_race(+callable)</pre>
<h4>Errors</h4>
<dl>
<dt>One of the goals is a variable:</dt>
<dd><code>instantiation_error</code></dd>
<dt>One of the 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 set of competing goals asynchronously in a new thread:</dt>
<dd><code>threaded_race((Goal; Goals)</code></dd>
<dt>Send a set of competing goals as an asynchronous message to <em>self</em>:</dt>
<dd><code>threaded_race(::(Message; Messages))</code></dd>
<dt>Send a set of competing goals as an asynchronous message to an object:</dt>
<dd><code>threaded_race((Object::(Message; Messages))</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: December 11, 2006</span>
</div>
<div class="navbottom">
<span><a href="threaded_ignore1.html">previous</a> | <a href="../../glossary.html">glossary</a> | <a href="threaded_exit1.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>