Questa domanda è stata gettata come punto di partenza in un colloquio tecnico presso un'azienda di semiconduttori. Immagino che non ci siano persone giuste - lo scopo di questa domanda aperta è di valutare la profondità e il livello di comfort dell'ingegnere. Domanda: - progettare un'API che monitora un indirizzo e restituisce quando l'indirizzo contiene un valore specifico: -
void reach_target_value(volatile int* addr, int value);
La mia soluzione ingenua era qualcosa del genere: -
void reach_target_value(volatile int* addr, int value)
{
while(*addr != value)
{
//Do nothing - spin in a tight loop
}
}
Ovviamente, in un ambiente con elaborazione multipla / multi-thread, potrebbe mancare di ritornare se l'indirizzo capita di raggiungere il valore di destinazione quando il processo / thread in esecuzione è cambiato contesto. Lasciando questo caso come migliorare il codice per assicurarsi che funzioni bene in un ambiente multi-thread in cui più thread monitoreranno lo stesso indirizzo con valori target diversi? Grazie per la lettura - gradirei i tuoi suggerimenti - puntatori di codice!