ThreadPoolExecute allows using of base class method as thread function
authorVictor Kirhenshtein <victor@netxms.org>
Mon, 11 Sep 2017 14:08:54 +0000 (17:08 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Mon, 11 Sep 2017 14:08:54 +0000 (17:08 +0300)
include/nms_threads.h

index e7beaf4..f15fc48 100644 (file)
@@ -974,9 +974,9 @@ template <typename T, typename R> void __ThreadPoolExecute_Wrapper(void *arg)
 /**
  * Execute task as soon as possible (use class member with one argument)
  */
-template <typename T, typename R> inline void ThreadPoolExecute(ThreadPool *p, T *object, void (T::*f)(R), R arg)
+template <typename T, typename B, typename R> inline void ThreadPoolExecute(ThreadPool *p, T *object, void (B::*f)(R), R arg)
 {
-   ThreadPoolExecute(p, __ThreadPoolExecute_Wrapper<T,R>, new __ThreadPoolExecute_WrapperData<T, R>(object, f, arg));
+   ThreadPoolExecute(p, __ThreadPoolExecute_Wrapper<B,R>, new __ThreadPoolExecute_WrapperData<B, R>(object, f, arg));
 }
 
 /* Interlocked increment/decrement functions */