mirror of
https://github.com/apache/ant.git
synced 2025-05-16 13:05:14 +00:00
80 lines
3.0 KiB
HTML
80 lines
3.0 KiB
HTML
|
<html>
|
||
|
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Language" content="en-us">
|
||
|
<title>Ant User Manual</title>
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
|
||
|
<h2>Parallel</h2>
|
||
|
<h3>Description</h3>
|
||
|
<p>Parallel is a container task - it can contain other Ant tasks. Each nested
|
||
|
task within the parallel task will be executed in its own thread. </p>
|
||
|
|
||
|
<p>Parallel tasks have a number of uses in an Ant build file including:
|
||
|
<ul>
|
||
|
<li>Taking advantage of available processing resources to reduce build time</li>
|
||
|
<li>Testing servers, where the server can be run in one thread and the test
|
||
|
harness is run in another thread.</li>
|
||
|
</ul>
|
||
|
|
||
|
<p>Care must be taken when using multithreading to ensure the tasks within the
|
||
|
threads do not interact. For example, two javac compile tasks which write
|
||
|
classes into the same destination directory may interact where one tries to
|
||
|
read a class for depenency information while the other task is writing the
|
||
|
class file. Be sure to avoid these types of interactions within a
|
||
|
<parallel> task</p>
|
||
|
|
||
|
<p>The parallel task has no attributes and does not support any nested
|
||
|
elements apart from Ant tasks. Any valid Ant task may be embedded within a
|
||
|
parallel task, including other parallel tasks.</p>
|
||
|
|
||
|
<p>Note that while the tasks within the parallel task are being run, the main
|
||
|
thread will be blocked waiting for all the child threads to complete.</p>
|
||
|
|
||
|
<p>If any of the tasks within the <parallel> task fails, the remaining
|
||
|
tasks in other threads will continue to run until all threads have completed.
|
||
|
In this sitiuation, the parallel task will also fail.</p>
|
||
|
|
||
|
<h3>Examples</h3>
|
||
|
<pre>
|
||
|
<parallel>
|
||
|
<wlrun ...>
|
||
|
<sequential>
|
||
|
<sleep seconds="30"/>
|
||
|
<junit ...>
|
||
|
<wlstop/>
|
||
|
</sequential>
|
||
|
</parallel>
|
||
|
</pre>
|
||
|
<p>This example represents a typical pattern for testing a server application.
|
||
|
In one thread the server is started (the wlrun task). The other thread consists
|
||
|
of a three tasks which are performed in sequence. The sleep task is used to
|
||
|
give the server time to come up. Another task which is capabale of validating
|
||
|
that the server is available could be used in place of the sleep task. The
|
||
|
test harness is then run. Once the tests are complete, the server is stopped
|
||
|
(using wlstop in this example), allowing both threads to complete. The
|
||
|
parallel task will also complete at this time and the build will then
|
||
|
continue.</p>
|
||
|
|
||
|
<pre>
|
||
|
<parallel>
|
||
|
<javac ...> <!-- compiler servlet code -->
|
||
|
<wljspc ...> <!-- precompile JSPs -->
|
||
|
</parallel>
|
||
|
</pre>
|
||
|
|
||
|
<p>This example shows two independent tasks being run to achieve better
|
||
|
resource utilization during the build. In this instance, some servlets are being
|
||
|
compiled in one thead and a set of JSPs is being precompiled in another. As
|
||
|
noted above, you need to be careful that the two tasks are independent, both in
|
||
|
terms of their dependencies and in terms of their potential interactions in
|
||
|
Ant's external environment.</p>
|
||
|
<hr>
|
||
|
<p align="center">Copyright © 2000,2001 Apache Software Foundation. All rights
|
||
|
Reserved.</p>
|
||
|
</body>
|
||
|
</html>
|
||
|
|