-/* Copyright (c) 2007-2016. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2017. 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. */
#include <xbt/base.h>
#include "simgrid/forward.h"
+#include <atomic>
#include <simgrid/simix.hpp>
namespace simgrid {
virtual void resume()=0;
virtual void post() =0; // What to do when a simcall terminates
+ /** @brief Increases the refcount */
void ref();
+ /** @brief Reduces the refcount */
void unref();
+
+ // boost::intrusive_ptr<Activity> support:
+ friend void intrusive_ptr_add_ref(ActivityImpl * activity);
+ friend void intrusive_ptr_release(ActivityImpl * activity);
+
private:
- int refcount = 1;
+ std::atomic_int_fast32_t refcount_{1};
};
}}} // namespace simgrid::kernel::activity