diff --git a/src/load_balance_general.c b/src/load_balance_general.c index eb9b300676ce9688c9de7baa5b7319eaef4fe953..e056d6d967729e81c123d252325a0c269b1197b9 100644 --- a/src/load_balance_general.c +++ b/src/load_balance_general.c @@ -243,6 +243,7 @@ void worker_handle_request(thread_struct* thread_args_ptr) { // Load has been split. Immediately attempt to update main processor of change. worker_send_status(thread_args_ptr->thread_num, thread_args_ptr->remaining_loads); + worker_send_status(index, work_send_value); } else { // Worker has exactly 0 or 1 loads. Not enough to send. Reject request instead. work_send_value = -1; diff --git a/src/load_balance_schemes.c b/src/load_balance_schemes.c index 68b0072cbe76347e779050a6bd1ff7fafa8b1b4e..ee51fc85f0da099b1797c938767c3e3a43398023 100644 --- a/src/load_balance_schemes.c +++ b/src/load_balance_schemes.c @@ -82,7 +82,7 @@ void arr_main(thread_struct* thread_args_ptr) { // Check if message present from respective process. MPI_Iprobe(index, tag_status_update, MPI_COMM_WORLD, &msg_status_flag, MPI_STATUS_IGNORE); - if (msg_status_flag == 1) { + while (msg_status_flag == 1) { msg_recieved = 1; // Message present. Retrieve and handle. @@ -90,6 +90,8 @@ void arr_main(thread_struct* thread_args_ptr) { MPI_Recv(recv_array, 2, MPI_INT, index, tag_status_update, MPI_COMM_WORLD, MPI_STATUS_IGNORE); main_display_status(thread_args_ptr, recv_array[0], recv_array[1], init_run); free(recv_array); + + MPI_Iprobe(index, tag_status_update, MPI_COMM_WORLD, &msg_status_flag, MPI_STATUS_IGNORE); } // Increment for next thread.