y_nnn: add run_bash attribute to debug kill issue when run already stopped

This commit is contained in:
2025-11-23 23:01:24 +01:00
parent fec7e4af6f
commit 35c6868d29
3 changed files with 9 additions and 6 deletions
@@ -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