Nell'utilizzo della mia applicazione, mi sono imbattuto in una condizione di competizione in un codice che utilizza un NSOperationQueue
per eseguire attività in modo asincrono dopo eventi attivati dall'utente. So come risolvere le condizioni della gara, poiché si tratta di uno stupido errore di progettazione che non approfondirò, ma mi piacerebbe provare l'errore con un caso di test (in modo che non ritorni durante l'ottimizzazione/refactoring lungo la linea). Questo mi ha perplesso. Come si fa a testare qualcosa che è multi-thread, specialmente quando lo scopo del test è generare una condizione di competizione?Codice basato su thread di test unitario? Forzare una condizione di gara
Qualcuno ha qualche link a materiale di riferimento a cui posso riferirsi quando si tratta di trattare thread e test di unità? Sono particolarmente interessato alla generazione di condizioni di gara.
Suppongo che si possa prendere in giro qualsiasi struttura di dati condivisa e all'interno dei propri oggetti mock è possibile eseguire qualsiasi sincronizzazione necessaria per eseguire thread diversi nell'ordine "errato". –