Ensure we only kill threads once
This commit was SVN r24620.
Этот коммит содержится в:
родитель
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",
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user