X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c15fa58a2cc08dbf1eb63246b30b38d482f51df2..79adfdb539deedcac38651c4f8c9b0a8767beb23:/src/msg/gos.c?ds=sidebyside diff --git a/src/msg/gos.c b/src/msg/gos.c index 77fa3243ff..7cfb055c7a 100644 --- a/src/msg/gos.c +++ b/src/msg/gos.c @@ -90,6 +90,11 @@ MSG_error_t MSG_task_get(m_task_t * task, state=surf_workstation_resource->common_public->action_get_state(t_simdata->comm); } while (state==SURF_ACTION_RUNNING); + if(t->simdata->using>1) { + xbt_fifo_unshift(msg_global->process_to_run,process); + xbt_context_yield(); + } + if(state == SURF_ACTION_DONE) MSG_RETURN(MSG_OK); else if(surf_workstation_resource->extension_public->get_state(h_simdata->host) == SURF_CPU_OFF) @@ -192,18 +197,19 @@ MSG_error_t MSG_task_put(m_task_t task, if(remote_host->simdata->sleeping[channel]) __MSG_process_unblock(remote_host->simdata->sleeping[channel]); /* else { */ - process->simdata->put_host = dest; - process->simdata->put_channel = channel; - while(!(task_simdata->comm)) - __MSG_process_block(); - process->simdata->put_host = NULL; - process->simdata->put_channel = -1; + process->simdata->put_host = dest; + process->simdata->put_channel = channel; + while(!(task_simdata->comm)) + __MSG_process_block(); + process->simdata->put_host = NULL; + process->simdata->put_channel = -1; /* } */ - do { + state=surf_workstation_resource->common_public->action_get_state(task_simdata->comm); + while (state==SURF_ACTION_RUNNING) { __MSG_task_wait_event(process, task); state=surf_workstation_resource->common_public->action_get_state(task_simdata->comm); - } while (state==SURF_ACTION_RUNNING); + } MSG_task_destroy(task);