-/* Copyright (c) 2012-2014. The SimGrid Team.
+/* Copyright (c) 2012-2019. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
package org.simgrid.msg;
-/** A mutex implemented on top of SimGrid synchronization mechanisms.
- * You can use it exactly the same way that you use the mutexes,
- * but to handle the interactions between the processes within the simulation.
+/** A mutex implemented on top of SimGrid synchronization mechanisms.
+ * You can use it exactly the same way that you use the mutexes,
+ * but to handle the interactions between the processes within the simulation.
*
+ * Don't mix simgrid synchronization with Java native one, or it will deadlock!
*/
public class Mutex {
private long bind; // The C object -- don't touch it
public Mutex() {
init();
}
- protected void finalize() {
- exit();
+
+ @Deprecated @Override
+ protected void finalize() throws Throwable {
+ nativeFinalize();
}
- private native void exit();
+ private native void nativeFinalize();
private native void init();
public native void acquire();
public native void release();
- /**
- * Class initializer, to initialize various JNI stuff
- */
+ /** Class initializer, to initialize various JNI stuff */
public static native void nativeInit();
static {
- Msg.nativeInit();
+ org.simgrid.NativeLib.nativeInit();
nativeInit();
}
}