diff options
Diffstat (limited to 'indra/llcommon/llcoros.h')
-rw-r--r-- | indra/llcommon/llcoros.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/indra/llcommon/llcoros.h b/indra/llcommon/llcoros.h index 95859198d4..d49a6e939c 100644 --- a/indra/llcommon/llcoros.h +++ b/indra/llcommon/llcoros.h @@ -33,11 +33,24 @@ #include <boost/fiber/fss.hpp> #include <boost/fiber/future/promise.hpp> #include <boost/fiber/future/future.hpp> +#include "mutex.h" #include "llsingleton.h" #include "llinstancetracker.h" #include <boost/function.hpp> #include <string> +// e.g. #include LLCOROS_MUTEX_HEADER +#define LLCOROS_MUTEX_HEADER <boost/fiber/mutex.hpp> +#define LLCOROS_CONDVAR_HEADER <boost/fiber/condition_variable.hpp> + +namespace boost { + namespace fibers { + class mutex; + enum class cv_status; + class condition_variable; + } +} + /** * Registry of named Boost.Coroutine instances * @@ -260,6 +273,12 @@ public: template <typename T> static Future<T> getFuture(Promise<T>& promise) { return promise.get_future(); } + // use mutex, lock, condition_variable suitable for coroutines + using Mutex = boost::fibers::mutex; + using LockType = std::unique_lock<Mutex>; + using cv_status = boost::fibers::cv_status; + using ConditionVariable = boost::fibers::condition_variable; + /// for data local to each running coroutine template <typename T> using local_ptr = boost::fibers::fiber_specific_ptr<T>; |