In uno scenario multithread, ho un metodo come questo:Un metodo che aspetta un cambio di stato dovrebbe essere const?
bool WaitForChange(time_duration WaitTime) const;
Questo metodo attende sia finché lo stato dell'oggetto è cambiato e restituisce true, o fino a quando i tempi di timeout out (come si fa a dire che?) e restituisce false.
La mia intuizione è che lo const
protegge da effetti collaterali indesiderati del metodo stesso, quindi va bene. Ma poi di nuovo, alcuni utenti potrebbero pensare che lo stato del non potrebbe essere cambiato, dal momento che il metodo è dichiarato const
. Quel utente è stupido, o dovrei rendere il metodo diverso da const
per evitare confusione?
Come aspettare? variabili di condizione, o sleep polling? – nos
Sto usando un 'boost :: condition_variable' per aspettare e un' boost :: mutex' per il locking. –