ThreadPool< InputType, OutputType > Node1 ThreadPool< InputType, OutputType > # inputQueueMutex # outputQueueMutex # workingThreadCountMutex # runThreadsMutex # perThreadDataFactory # perThreadDataDestructor # inputFunctionQueue # inputQueue # outputQueue # threadDataInterface and 6 more... + ThreadPool() + ~ThreadPool() + StartThreads() + SetThreadDataInterface() + StopThreads() + AddInput() + AddOutput() + HasOutput() + HasOutputFast() + HasInput() and 20 more... # RAK_THREAD_DECLARATION() Node2 ThreadPool< ThreadData, int > # inputQueueMutex # outputQueueMutex # workingThreadCountMutex # runThreadsMutex # perThreadDataFactory # perThreadDataDestructor # inputFunctionQueue # inputQueue # outputQueue # threadDataInterface and 6 more... + ThreadPool() + ~ThreadPool() + StartThreads() + SetThreadDataInterface() + StopThreads() + AddInput() + AddOutput() + HasOutput() + HasOutputFast() + HasInput() and 20 more... # RAK_THREAD_DECLARATION() Node1->Node2 < ThreadData, int >