Mercurial > hg > Game > Cerium
changeset 1883:c5ae9bbd5eff draft
dead lock fixed. ( failed to recover cyclic queue )
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 03 Jan 2014 15:54:36 +0900 |
parents | 33c03287ff81 |
children | d28f0c5489c3 |
files | TaskManager/Cell/CellTaskManagerImpl.cc |
diffstat | 1 files changed, 7 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/TaskManager/Cell/CellTaskManagerImpl.cc Fri Jan 03 10:36:37 2014 +0900 +++ b/TaskManager/Cell/CellTaskManagerImpl.cc Fri Jan 03 15:54:36 2014 +0900 @@ -282,22 +282,16 @@ if (--list->self->flag.dim_count == 0) check_task_list_finish(schedTaskManager, list, waitTaskQueue); if (speTaskList[id]->getFirst() == list) { - if (list->next) + if (list->next) { speTaskList[id]->next = list->next; - else { // make it normal empty cyclic list - speTaskList[id]->next = speTaskList[id]; - speTaskList[id]->prev = speTaskList[id]; + } else { // make it normal empty cyclic list + list->next = speTaskList[id]; + list->prev = speTaskList[id]; + speTaskList[id]->remove(list); } speTaskList[id]->free_(list); - } - if (taskListInfo[id]->getFirst() == list) { - if (list->next) - taskListInfo[id]->next = list->next; - else { // make it normal empty cyclic list - taskListInfo[id]->next = taskListInfo[id]; - taskListInfo[id]->prev = taskListInfo[id]; - } - taskListInfo[id]->free_(list); + } else { + fprintf(stderr,"mail_check error on %p\n",list); } } // MY_SPE_NOP: 特に意味のないコマンド