Pergunta de entrevista da empresa NVIDIA

Given a sequence S=0102030405...... Given 3 thread as follows 1. Thread 1 zero() : Will print zero 2. Thread 2: even(): Will print even numbers 2,4,6,8 3. Thread 3: odd(): Will print odd numbers 1,3,5,7 Design a synchronization mechanism so that we get the above sequence Round 5 Q5

Resposta da entrevista

Sigiloso

1 de fev. de 2025

mutex_t zero_mutex = 1; mutex_t odd_mutex = 0; mutex_t even_mutex = 0; Thread_1_print_zero() { while(1) { wait(zero_mutex); printf("%d",0); post(odd_mutex); } } Thread_2_print_even() { int even_i = 2; while(1) { wait(even_mutex); printf("%d",even_i); even_i += 2; post(zero_mutex); } } Thread_3_print_odd() { int odd_i = 1; while(1) { wait(odd_mutex); printf("%d",odd_i); odd_i += 2; post(even_mutex); } }