同步的含義
1.同步問題的產(chǎn)生,主要是由于在高級語言的源代碼中,大多數(shù)情況下看起來是一條語句,但在最后編譯好的匯編語言機器碼中則會被翻譯為許多條語句,從而在操作系統(tǒng)調度時被劃分到不同的時間片中。
2.看看下面這個語句,假設message是一個string對象,已經(jīng)保存了一個字符串:
message += "Hello world!";
這條語句在C#語法上是一條語句,但在執(zhí)行代碼時,實際上它涉及到許多操作。需要重新分配內(nèi)存以存儲更長的新字符串,需要設置變量message使之指向新的內(nèi)存,需要復制實際文本等。顯然,這里選擇了一種復雜字符串,但即使在基本數(shù)字類型上執(zhí)行算術操作,后臺進行的操作也比從C#代碼中看到的要多。而且,許多操作不能直接在存儲于內(nèi)存空間中的變量上進行,它們的值必須單獨復制到處理器的特定位置上,即寄存器。只要一個C#語句翻譯為多個本機代碼命令,線程的時間片就有可能在執(zhí)行該語句的進程中終止,如果是這樣,同一個進程中的另一個線程就會獲得一個時間片,如果涉及到這條語句的變量訪問(在上面的示例中,是message)不是同步的,那么另一個線程可能讀寫同一個變量。
點擊加載更多評論>>