Descrieți în cuvinte cum ați rezolva problema cache-ului pentru prețul mașinii: structură de date, sincronizare, actualizare.
iOS
func getCarPrice() int64 { time.Sleep(1 * time.Second) return rand.Int63n(1000) } func main() { http.HandleFunc("/car/instant", func(resp http.ResponseWriter, req *http.Request) { fmt.Fprintf(resp, "%d", 0) }) http.ListenAndServe(":8080", nil) }
De ce codul actual cu o buclă infinită for în main nu funcționează? Cum se poate remedia?
De ce unele interogări returnează un preț care nu a existat niciodată (de exemplu, o valoare intermediară între prețul vechi și cel nou)?
Este necesar să scrieți o bibliotecă simplă de cache în memorie. type Cache interface { Set(k, v string) Get(k string) (v string, ok bool) }
De ce adăugarea unui mutex doar pentru scriere nu rezolvă problema cursei de date? Cum se folosește corect un mutex pentru a proteja o variabilă comună?