In the following code, a few lines have been deleted, and the interviewer asks what has been deleted,Who can help,tks!
int n_threads=7;
int print_a=0;
int print_b=0;
int print_c=0;
int print_d=0;
int print_e=0;
int print_f=0;
int print_g=0;
int assigned_job[7]={PRINTA, PRINTB, PRINTC, PRINTD, PRINTE, PRINTF, PRINTG};
void worker(void *t)
{
wait_for_new_work:
pthread_mutex_lock(&threads_wait_for_new_cmd_mutex[my_id]);
pthread_cond_wait(&threads_wake_up_cv[my_id], &threads_wait_for_new_cmd_mutex[my_id]);
pthread_mutex_unlock(&threads_wait_for_new_cmd_mutex[my_id]);
if (thread_control->pls_exit){
pthread_exit(&(thread_control->retval));
}
if (assigned_job[my_id]==PRINTA} print_a++;
else (assigned_job[my_id]==PRINTB} print_b++;
else (assigned_job[my_id]==PRINTC} print_c+;
else (assigned_job[my_id]==PRINTD} print_d++;
else (assigned_job[my_id]==PRINTE} print_e++;
else (assigned_job[my_id]==PRINTF} print_f++;
else (assigned_job[my_id]==PRINTG} print_g++;
pthread_mutex_lock(&threads_done_count_mutex);
threads_done_count++;
if (threads_done_count==n_threads)
pthread_cond_signal(&all_threads_done_cv);
pthread_mutex_unlock(&threads_done_count_mutex);
goto wait_for_new_work;
}
int workers_go(int clear_res)
{
pthread_mutex_lock(&threads_done_count_mutex);
threads_done_count=0;
pthread_mutex_unlock(&threads_done_count_mutex);
for (i=0; i<n_threads; i++){
pthread_mutex_lock(&threads_wait_for_new_cmd_mutex[i]);
pthread_cond_signal(&threads_wake_up_cv[i]);
pthread_mutex_unlock(&threads_wait_for_new_cmd_mutex[i]);
}
pthread_mutex_lock(&threads_done_count_mutex);
if (threads_done_count<n_threads){
printf("n_threads=%d, threads_done_count=%d, waiting for all threads done...\n",
n_threads,
threads_done_count);
pthread_cond_wait(&all_threads_done_cv, &threads_done_count_mutex);
}
pthread_mutex_unlock(&threads_done_count_mutex);
if (verbose)
printf("master: all threads done work\n");
}
int main(int argc, char **argv)
{
/
Create threads pool
*/
cnt=1000;
while(cnt--){
workers_go(1);
sleep(10);
}
}