mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
51 lines
1.8 KiB
Plaintext
51 lines
1.8 KiB
Plaintext
/*
|
|
* This file is part of the X10 project (http://x10-lang.org).
|
|
*
|
|
* This file is licensed to You under the Eclipse Public License (EPL);
|
|
* You may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* http://www.opensource.org/licenses/eclipse-1.0.php
|
|
*
|
|
* (C) Copyright IBM Corporation 2006-2014.
|
|
*/
|
|
|
|
import x10.xrx.Runtime;
|
|
|
|
/**
|
|
* Demonstrate how to instantiate the X10 runtime as an executor service
|
|
* submit jobs to the runtime, wait jobs to complete and cancel all jobs
|
|
*
|
|
* Compile with: x10c -O -EXECUTOR_MODE=true Cancellation.x10
|
|
* Run with: X10_CANCELLABLE=true X10_NPLACES=4 x10 -DX10RT_IMPL=JavaSockets Cancellation
|
|
*/
|
|
class Cancellation {
|
|
static def job(id:Long, iterations:Long) = ()=>{
|
|
at (Place.places().next(here)) async {
|
|
for (i in 1..iterations) {
|
|
finish for (p in Place.places()) {
|
|
at (p) async Console.OUT.println(here+" says hello (job " + id + ", iteration " + i + ")");
|
|
}
|
|
Console.ERR.println();
|
|
System.sleep(200);
|
|
}
|
|
}
|
|
};
|
|
|
|
public static def main(args:Rail[String]):void {
|
|
val w1 = Runtime.submit(job(1, 5));
|
|
w1.await(); Console.ERR.println("Job 1 completed\n");
|
|
val w2 = Runtime.submit(job(2, 1000));
|
|
System.threadSleep(1000);
|
|
val c1 = Runtime.cancelAll();
|
|
try { w2.await(); } catch (e:Exception) { Console.ERR.println("Job 2 aborted with exception " + e +"\n"); }
|
|
c1.await(); // waiting for cancellation to be processed
|
|
System.threadSleep(1000);
|
|
Runtime.submit(job(3, 1000));
|
|
Runtime.submit(job(4, 1000));
|
|
System.threadSleep(1000);
|
|
val c2 = Runtime.cancelAll();
|
|
c2.await();
|
|
Console.ERR.println("Goodbye\n");
|
|
}
|
|
}
|