-/*
- * Copyright (c) 2012-2013. 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.
- *
- */
+/* 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();
}
}