y_nnn: add run_bash attribute to debug kill issue when run already stopped
This commit is contained in:
@@ -56,6 +56,8 @@ struct arg_bash{
|
|||||||
pthread_t *thread_run_newbash;
|
pthread_t *thread_run_newbash;
|
||||||
pthread_t *thread_run_waitbash;
|
pthread_t *thread_run_waitbash;
|
||||||
|
|
||||||
|
int run_bash;
|
||||||
|
|
||||||
pthread_mutex_t *mut_bash_var;
|
pthread_mutex_t *mut_bash_var;
|
||||||
pthread_cond_t *cond_bash_var;
|
pthread_cond_t *cond_bash_var;
|
||||||
int go_on;
|
int go_on;
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ void* runBashPrint(void *arg){
|
|||||||
struct arg_run_qlearn_bprint *arg_run=(struct arg_run_qlearn_bprint*)arg;
|
struct arg_run_qlearn_bprint *arg_run=(struct arg_run_qlearn_bprint*)arg;
|
||||||
struct RL_agent *rlAgent = arg_run->rlAgent;
|
struct RL_agent *rlAgent = arg_run->rlAgent;
|
||||||
struct arg_bash *bash_arg = arg_run->bash_arg;
|
struct arg_bash *bash_arg = arg_run->bash_arg;
|
||||||
|
bash_arg->run_bash=1;
|
||||||
struct status_qlearning *qlStatus = rlAgent->status;
|
struct status_qlearning *qlStatus = rlAgent->status;
|
||||||
struct print_params * pprint = rlAgent->pprint;
|
struct print_params * pprint = rlAgent->pprint;
|
||||||
struct vehicle *car = rlAgent->car;
|
struct vehicle *car = rlAgent->car;
|
||||||
@@ -181,6 +181,7 @@ void* runBashPrint(void *arg){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("debug: end runBashPrint\n");
|
printf("debug: end runBashPrint\n");
|
||||||
|
bash_arg->run_bash=0;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ struct arg_bash *create_arg_bash(){
|
|||||||
|
|
||||||
b_arg->thread_run_newbash=NULL;
|
b_arg->thread_run_newbash=NULL;
|
||||||
b_arg->thread_run_waitbash=NULL;
|
b_arg->thread_run_waitbash=NULL;
|
||||||
|
b_arg->run_bash=0;
|
||||||
return b_arg;
|
return b_arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,12 +191,12 @@ void free_arg_bash(struct arg_bash *arg){
|
|||||||
free(arg->thread_launch);
|
free(arg->thread_launch);
|
||||||
}
|
}
|
||||||
if(arg->thread_run_newbash){
|
if(arg->thread_run_newbash){
|
||||||
if(ret_check_down_bash_new == 0)
|
if(arg->run_bash && ret_check_down_bash_new == 0)
|
||||||
pthread_join(*(arg->thread_run_newbash),NULL);
|
pthread_join(*(arg->thread_run_newbash),NULL);
|
||||||
free(arg->thread_run_newbash);
|
free(arg->thread_run_newbash);
|
||||||
}
|
}
|
||||||
if(arg->thread_run_waitbash){
|
if(arg->thread_run_waitbash){
|
||||||
if(ret_check_down_bash_current==0)
|
if(arg->run_bash && ret_check_down_bash_current==0)
|
||||||
pthread_join(*(arg->thread_run_waitbash),NULL);
|
pthread_join(*(arg->thread_run_waitbash),NULL);
|
||||||
free(arg->thread_run_waitbash);
|
free(arg->thread_run_waitbash);
|
||||||
}
|
}
|
||||||
@@ -277,7 +277,7 @@ void kill_all_bash(struct arg_bash *arg){
|
|||||||
}
|
}
|
||||||
pthread_mutex_unlock(arg->mut_bash_var);
|
pthread_mutex_unlock(arg->mut_bash_var);
|
||||||
if(arg->thread_run_newbash){
|
if(arg->thread_run_newbash){
|
||||||
if(ret_check_down_bash_new == 0){
|
if(ret_check_down_bash_new == 0 && arg->go_on){
|
||||||
printf("debug: join thread_run_newbash\n");
|
printf("debug: join thread_run_newbash\n");
|
||||||
pthread_join(*(arg->thread_run_newbash),NULL);
|
pthread_join(*(arg->thread_run_newbash),NULL);
|
||||||
}else
|
}else
|
||||||
@@ -286,7 +286,7 @@ void kill_all_bash(struct arg_bash *arg){
|
|||||||
arg->thread_run_newbash=NULL;
|
arg->thread_run_newbash=NULL;
|
||||||
}
|
}
|
||||||
if(arg->thread_run_waitbash){
|
if(arg->thread_run_waitbash){
|
||||||
if(ret_check_down_bash_current == 0){
|
if(ret_check_down_bash_current == 0 && arg->go_on){
|
||||||
printf("debug: join thread_run_waitbash\n");
|
printf("debug: join thread_run_waitbash\n");
|
||||||
pthread_join(*(arg->thread_run_waitbash),NULL);
|
pthread_join(*(arg->thread_run_waitbash),NULL);
|
||||||
}else
|
}else
|
||||||
|
|||||||
Reference in New Issue
Block a user