diff --git a/tasks_cpp/include/embb/tasks/node.h b/tasks_cpp/include/embb/tasks/node.h index 094b34d..6bc3f36 100644 --- a/tasks_cpp/include/embb/tasks/node.h +++ b/tasks_cpp/include/embb/tasks/node.h @@ -120,6 +120,15 @@ class Node { static void Finalize(); /** + * Returns the number of available queues. + * \return The number of available queues + * \waitfree + */ + mtapi_uint_t GetQueueCount() const { + return queue_count_; + } + + /** * Returns the number of available cores. * \return The number of available cores * \waitfree @@ -218,6 +227,7 @@ class Node { mtapi_size_t node_local_data_size, mtapi_task_context_t * context); + mtapi_uint_t queue_count_; mtapi_uint_t core_count_; mtapi_uint_t worker_thread_count_; mtapi_action_hndl_t action_handle_; diff --git a/tasks_cpp/src/node.cc b/tasks_cpp/src/node.cc index 362252c..68cbf15 100644 --- a/tasks_cpp/src/node.cc +++ b/tasks_cpp/src/node.cc @@ -74,6 +74,8 @@ Node::Node( EMBB_THROW(embb::base::ErrorException, "mtapi::Node could not initialize mtapi"); } + mtapi_node_get_attribute(node_id, MTAPI_NODE_MAX_QUEUES, &queue_count_, sizeof(queue_count_), &status); + assert(MTAPI_SUCCESS == status); core_count_ = info.hardware_concurrency; worker_thread_count_ = embb_core_set_count(&attr->core_affinity); action_handle_ = mtapi_action_create(TASKS_CPP_JOB, action_func,