重排序,是编译器干的还是 CPU 干的
你说的重排序,是编译器干的还是 CPU 干的?
Copia l'istruzione e scegli un modello. Farà l'intervistatore e ti interrogherà atto per atto invece di servirti la risposta.
Su un telefono con l'app installata, il sistema apre direttamente l'app. Dentro WeChat i collegamenti non aprono app esterne: aprilo prima in un browser.
Il testo copiato finisce con la griglia di correzione che il modello usa per valutarti. Non leggerla prima: vale l'averci arrivato da solo.
这一份从一段十行的代码开始:两个线程,一个写、一个读,问你会不会读到旧值。答「不会」和答「会」都要接着回答同一个问题 —— 谁把顺序换了。
目标是把「重排序」拆成三层:编译器、CPU 乱序、写缓冲与缓存可见性。三层都保证单线程看起来没变,所以这类 bug 在本地永远复现不了。
还有一问是照妖镜:你说的 volatile,能保证 i++ 是原子的吗?以及 C 的 volatile 和 Java 的 volatile 是不是同一回事。
Che cosa allena questa
Questo testo nel repository (la soluzione è in fondo a quel file — la vedrai)
Già fatto questo?
Accedi per segnare che l'hai fatto: la prossima volta vedrai in che giorno è stato.
Appunti di chi l'ha fatto
Come si usa
Questa serie insegna invece di interrogare: ti guida invece di incalzarti finché non hai più nulla da dire. Quando ti blocchi chiede prima a che livello (mai sentito / lo so ma non so perché / so perché ma non lo applico) e poi decide che cosa darti. Solo dopo averti guidato due volte te lo dice, e allora ti chiede di ripeterlo con parole tue.
Ti chiederà numeri di continuo: se rispondi «ha un costo» o «è più veloce» ti interrompe. Una conclusione senza ordine di grandezza è una conclusione imparata a memoria — ed è proprio ciò che questa serie allena.
Come iniziare
- Scegline una, aprila, copia il prompt.
- Incollalo in una conversazione nuova e vuota, non dire nulla e aspetta la prima domanda.
- Preparati a dare ordini di grandezza: quanti nanosecondi, quanti microsecondi, quante volte più lento. Dire che non lo sai va bene: lo annota e prosegue.
Quattro comandi da lanciare in qualsiasi momento
跳过passa subito alla scena successiva换个说法rispiega questo punto da un'altra angolazione直说吧dai la risposta completa e poi fammela ripetere复盘salta alla chiusura e stampa la scheda di bilancio
Tre trappole
- Non leggere prima la soluzione in fondo: quella sezione sugli «errori di ragionamento più comuni» è la risposta a ogni domanda.
- Non buttarti sul termine tecnico. Dire «è un TLB miss» è facile; dire di quanto costa meno di un page fault è ciò che conta.
- Quando comincia a lodarti, rimandalo alla regola «non lodarmi». Guidare non è coccolare.
Per farti gli ordini di grandezza: letture casuali e poi il primo byte. Per il debug in produzione: malloc, stalli TCP, cambi di contesto. Per il codice concorrente: riordino e falsa condivisione.
Accedi per scrivere un appunto.