Kacam.net

कंप्यूटर सिस्टम

重排序,是编译器干的还是 CPU 干的

你说的重排序,是编译器干的还是 CPU 干的?

प्रॉम्प्ट कॉपी करें, फिर कोई एक मॉडल चुनें। वह जवाब थमाने के बजाय इंटरव्यू लेने वाले की तरह दृश्य दर दृश्य आपसे पूछेगा।

ChatGPT Claude DeepSeek 豆包 Kimi Gemini

जिस फ़ोन में ऐप लगा है, वहाँ सिस्टम सीधे ऐप खोल देगा। WeChat के अंदर बाहरी ऐप नहीं खुलते — पहले ब्राउज़र में खोलें।

कॉपी किए हुए पाठ के आख़िर में वही उत्तर-कुंजी है जिससे मॉडल आपको आँकता है। पहले खुद न पढ़ें — खुद तक पहुँचना ही असली बात है।

这一份从一段十行的代码开始:两个线程,一个写、一个读,问你会不会读到旧值。答「不会」和答「会」都要接着回答同一个问题 —— 谁把顺序换了。

目标是把「重排序」拆成三层:编译器、CPU 乱序、写缓冲与缓存可见性。三层都保证单线程看起来没变,所以这类 bug 在本地永远复现不了。

还有一问是照妖镜:你说的 volatile,能保证 i++ 是原子的吗?以及 C 的 volatile 和 Java 的 volatile 是不是同一回事。

★★★★★ · लगभग 40 मिनट · क्या परखा जाता है: 三层重排序、可见性 vs 有序性 vs 原子性、x86 为什么骗了你

यह किसका अभ्यास कराती है

पुनःक्रम और दृश्यता कैश और कैश लाइन

यह वाला कर चुके हैं?

साइन इन करके दर्ज करें कि यह अभ्यास कर लिया — अगली बार दिखेगा कि किस दिन किया था।

जिन्होंने यह किया, उनके नोट

अभी किसी ने नहीं लिखा। करने के बाद बताइए कि बातचीत से क्या निकला — किस दृश्य पर अटके, कौन-सा नतीजा बाद में बदला।

नोट लिखने के लिए साइन इन।

इसे कैसे इस्तेमाल करें

यह श्रृंखला सिखाती है, जिरह नहीं करती: यह राह दिखाती है, न कि तब तक दबाती है जब तक कहने को कुछ न बचे। अटकने पर पहले पूछती है कि आप किस परत पर अटके हैं (सुना ही नहीं / जानता हूँ पर क्यों नहीं पता / समझता हूँ पर लगा नहीं पाता), फिर तय करती है कि क्या देना है। दो बार राह दिखाने के बाद ही सीधा उत्तर देती है — और फिर अपने शब्दों में दोहरवाती है।

यह लगातार अंक माँगेगी: «थोड़ा ख़र्च तो है» या «तेज़ है» कहने पर टोक देगी। जिस नतीजे का अंक आप नहीं बता सकते, वह रटा हुआ नतीजा है — यही यह श्रृंखला सिखाती है।

कैसे शुरू करें

  1. एक चुनिए, खोलिए, प्रॉम्प्ट कॉपी कीजिए।
  2. एकदम नई ख़ाली बातचीत में चिपकाइए, कुछ मत कहिए, पहले सवाल का इंतज़ार कीजिए।
  3. अंक बताने के लिए तैयार रहिए: कितने नैनोसेकंड, कितने माइक्रोसेकंड, कितने गुना धीमा। न पता हो तो कह दीजिए — यह नोट करके आगे बढ़ जाएगी।

बीच में कभी भी कहे जा सकने वाले चार संकेत

  • 跳过 तुरंत अगले दृश्य पर
  • 换个说法 इस जगह को दूसरे कोण से फिर समझाना
  • 直说吧 पूरा उत्तर बताना, फिर मुझसे दोहरवाना
  • 复盘 सीधे समापन पर जाकर पुनरावलोकन कार्ड निकलवाना

तीन फंदे

  • अंत वाला उत्तर-पत्र पहले मत पढ़िए — उसका «आम तौर पर लोग क्या ग़लत समझते हैं» वाला हिस्सा ही हर सवाल का जवाब है।
  • शब्दजाल पर मत टूटिए। «यह TLB मिस है» कहना आसान है; यह बताना कि पेज फ़ॉल्ट से कितना सस्ता है — वही मायने रखता है।
  • जब वह तारीफ़ करने लगे, उसे «मेरी तारीफ़ मत करो» वाला नियम याद दिलाइए। राह दिखाना दुलारना नहीं है।

अंकों की समझ बनानी हो तो पहले रैंडम रीड और पहला बाइट। लाइव जाँच में काम आते हैं malloc, TCP का अटकना, कॉन्टेक्स्ट स्विच। समवर्ती कोड लिखते हों तो पुनःक्रम और छद्म साझाकरण।