mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 17:33:38 +00:00
79 lines
2.1 KiB
Java
79 lines
2.1 KiB
Java
// vim: ts=4 sw=4 expandtab ft=java
|
|
//
|
|
// Copyright (C) 2014, 2018 The Mercury Team
|
|
// This file is distributed under the terms specified in COPYING.LIB.
|
|
//
|
|
|
|
package jmercury.runtime;
|
|
|
|
/**
|
|
* Interface to the Mercury Runtime System for Java code.
|
|
*
|
|
* No instance of this class is ever created, all its members and methods
|
|
* are static.
|
|
*/
|
|
public class MercuryRuntime
|
|
{
|
|
/**
|
|
* Private constructor.
|
|
* This private constructor doesn't do anything and isn't called by
|
|
* anyone. It exists only to prevent people from creating an instance.
|
|
*/
|
|
private MercuryRuntime() {
|
|
}
|
|
|
|
private static MercuryThreadPool thread_pool = null;
|
|
|
|
/**
|
|
* Return the thread pool, initialising it if required.
|
|
* This does not start the thread pool. It is started either when
|
|
* startup() is called or automatically when the first task is
|
|
* submitted.
|
|
*/
|
|
public static synchronized MercuryThreadPool getThreadPool()
|
|
{
|
|
if (thread_pool == null) {
|
|
thread_pool = new MercuryThreadPool(
|
|
JavaInternal.getOptions().getNumProcessors());
|
|
}
|
|
return thread_pool;
|
|
}
|
|
|
|
/**
|
|
* Retrieve the exit status stored in the I/O state.
|
|
*/
|
|
public static int getExitStatus() {
|
|
return JavaInternal.exit_status;
|
|
}
|
|
|
|
/**
|
|
* Finalise the runtime system.
|
|
* This _must_ be called at the end of any program. It runs finalisers
|
|
* and stops the thread pool. This will wait for the thread pool
|
|
* to shutdown (unless abort=true).
|
|
*/
|
|
public static void finalise(boolean abort) {
|
|
MercuryThreadPool pool;
|
|
|
|
pool = getThreadPool();
|
|
if (!abort) {
|
|
JavaInternal.run_finalisers();
|
|
}
|
|
pool.shutdown(abort);
|
|
if (!abort) {
|
|
pool.waitForShutdown();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Finalise the runtime system.
|
|
* This _must_ be called at the end of any program. It runs finalisers
|
|
* and stops the thread pool. This will wait for the thread pool
|
|
* to shutdown.
|
|
* This is the same as calling finalise(false)
|
|
*/
|
|
public static void finalise() {
|
|
finalise(false);
|
|
}
|
|
}
|