1
1

Ensure we only kill threads once

This commit was SVN r24620.
Этот коммит содержится в:
Ralph Castain 2011-04-18 14:47:09 +00:00
родитель 8014e7432c
Коммит 5f64b830f9

Просмотреть файл

@ -71,24 +71,26 @@ void orte_rmcast_base_stop_threads(void)
{ {
opal_buffer_t *msg=NULL; opal_buffer_t *msg=NULL;
if (orte_abnormal_term_ordered) { ORTE_ACQUIRE_THREAD(&orte_rmcast_base.recv_process_ctl);
OPAL_OUTPUT_VERBOSE((5, orte_rmcast_base.rmcast_output, if (orte_rmcast_base.recv_process_ctl.running) {
"%s rmcast:base: killing recv processing thread", ORTE_RELEASE_THREAD(&orte_rmcast_base.recv_process_ctl);
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME))); if (orte_abnormal_term_ordered) {
opal_thread_kill(&orte_rmcast_base.recv_process, SIGTERM); OPAL_OUTPUT_VERBOSE((5, orte_rmcast_base.rmcast_output,
} else { "%s rmcast:base: killing recv processing thread",
OPAL_OUTPUT_VERBOSE((5, orte_rmcast_base.rmcast_output, ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)));
"%s rmcast:base: stopping recv processing thread", opal_thread_kill(&orte_rmcast_base.recv_process, SIGTERM);
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME))); orte_rmcast_base.recv_process_ctl.running = false;
ORTE_ACQUIRE_THREAD(&orte_rmcast_base.recv_process_ctl); ORTE_ACQUIRE_THREAD(&orte_rmcast_base.recv_process_ctl);
if (orte_rmcast_base.recv_process_ctl.running) { } else {
ORTE_RELEASE_THREAD(&orte_rmcast_base.recv_process_ctl); OPAL_OUTPUT_VERBOSE((5, orte_rmcast_base.rmcast_output,
"%s rmcast:base: stopping recv processing thread",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)));
opal_fd_write(orte_rmcast_base.recv_pipe[1], sizeof(opal_buffer_t*), &msg); opal_fd_write(orte_rmcast_base.recv_pipe[1], sizeof(opal_buffer_t*), &msg);
opal_thread_join(&orte_rmcast_base.recv_process, NULL); opal_thread_join(&orte_rmcast_base.recv_process, NULL);
ORTE_ACQUIRE_THREAD(&orte_rmcast_base.recv_process_ctl); ORTE_ACQUIRE_THREAD(&orte_rmcast_base.recv_process_ctl);
} }
ORTE_RELEASE_THREAD(&orte_rmcast_base.recv_process_ctl);
} }
ORTE_RELEASE_THREAD(&orte_rmcast_base.recv_process_ctl);
OPAL_OUTPUT_VERBOSE((5, orte_rmcast_base.rmcast_output, OPAL_OUTPUT_VERBOSE((5, orte_rmcast_base.rmcast_output,
"%s rmcast:base: all threads stopped", "%s rmcast:base: all threads stopped",