private double messageSize;
- static private Long idCpt = 0L;
-
- private Long id;
-
/** Default constructor (all fields to 0 or null) */
public Task() {
create(null, 0, 0);
this.messageSize = 0;
- setId(idCpt);
- idCpt++;
}
/* * * *
public Task(String name, double flopsAmount, double bytesAmount) {
create(name, flopsAmount, bytesAmount);
this.messageSize = bytesAmount;
- setId(idCpt);
- idCpt++;
}
/**
* Construct an new parallel task with the specified processing amount and amount for each host
/** Cancels a task. */
public native void cancel();
- /** Deletes a task.
- *
- * @exception NativeException if the destruction failed.
- */
- protected void finalize() throws NativeException {
- destroy();
+ /** Deletes a task once the garbage collector reclaims it */
+ @Override
+ protected void finalize() {
+ try {
+ // Exceptions in finalizers lead to bad situations:
+ // http://stackoverflow.com/questions/7644556/troubleshooting-a-java-memory-leak-finalization
+ nativeFinalize();
+ bind=0; // to avoid segfaults if the impossible happens yet again making this task surviving its finalize()
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
}
- /**
- * The natively implemented method to destroy a MSG task.
- */
- protected native void destroy();
+ protected native void nativeFinalize();
/* * * *
* * Communication-related * *
* * * */
public double getMessageSize() {
return this.messageSize;
}
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
}