![]() |
Helixis 1.0
Task Programming API
|
Go to the source code of this file.
Data Structures | |
| struct | hlx_group |
Functions | |
| void | hlx_group_construct (hlx_group *) |
| void | hlx_group_destruct (hlx_group *) |
| void | hlx_group_add_task (hlx_group *, hlx_task *) |
| atom_t | hlx_group_get_size (hlx_group *) |
Definition at line 102 of file parallel_task_groups.c.
References hlx_api::atomic_incr_entry, hlx_list_push_back(), HLX_TASK_STATUS_RUN, hlx_task::status, hlx_group::tasks, hlx_api::thread_api, and hlx_thread_api::thread_resume.
Referenced by hlx_core_add_task_in_group_callback2().
{
hlx_list_push_back(&group->tasks, task);
if (task->status == HLX_TASK_STATUS_RUN)
gl_api.atomic_incr_entry(&group->active_count);
gl_api.thread_api.thread_resume(&(group->thread));
}
| void hlx_group_construct | ( | hlx_group * | ) |
Definition at line 50 of file parallel_task_groups.c.
References hlx_list_construct(), hlx_group::id, MAX_TASK_PER_GROUP, queue_new(), hlx_group::size, hlx_group::tasks, hlx_api::thread_api, and hlx_thread_api::thread_construct.
Referenced by hlx_core_create_group(), and hlx_scheduler_construct().
{
group->id = (hlx_group_id)group;
hlx_list_construct(&group->tasks);
queue_new(&group->buf_tasks, MAX_TASK_PER_GROUP);
gl_api.thread_api.thread_construct(&(group->thread));
group->size = 0;
group->active_count = 0;
}
| void hlx_group_destruct | ( | hlx_group * | ) |
Definition at line 60 of file parallel_task_groups.c.
References _hlx_list_node::data, hlx_list::first, hlx_api::free_entry, hlx_list_clear(), _hlx_list_node::next, queue_delete(), queue_dequeue(), hlx_task::stack, hlx_group::tasks, hlx_api::thread_api, and hlx_thread_api::thread_destruct.
Referenced by hlx_scheduler_destruct().
{
hlx_list_node* it = group->tasks.first;
hlx_task* task;
while (it != 0)
{
task = it->data;
if (task->stack != 0)
gl_api.free_entry(task->stack);
gl_api.free_entry(it->data);
it = it->next;
}
hlx_list_clear(&group->tasks);
while (queue_dequeue(group->buf_tasks, (void**)&task))
{
if (task->stack != 0)
gl_api.free_entry(task->stack);
gl_api.free_entry(task);
}
queue_delete(group->buf_tasks, 0, 0);
gl_api.thread_api.thread_destruct(&(group->thread));
}
Definition at line 123 of file parallel_task_groups.c.
References queue_query(), QUEUE_QUERY_ELEMENT_COUNT, hlx_list::size, and hlx_group::tasks.
Referenced by hlx_sheduler_find_lighter_group().
{
atom_t queue_size;
queue_query(group->buf_tasks, QUEUE_QUERY_ELEMENT_COUNT, 0, &queue_size);
return (group->tasks.size + queue_size);
}
1.7.4