線程運行規(guī)則?
為什么我運行以后是 男演員第0次 男演員第1次 男演員第2次 男演員第3次 男演員第4次 女演員第0次 男演員第5次 女演員第1次 女演員第2次 男演員第6次 是電腦配置(雙核之類的區(qū)別)導(dǎo)致的線程運行不一樣嗎?
為什么我運行以后是 男演員第0次 男演員第1次 男演員第2次 男演員第3次 男演員第4次 女演員第0次 男演員第5次 女演員第1次 女演員第2次 男演員第6次 是電腦配置(雙核之類的區(qū)別)導(dǎo)致的線程運行不一樣嗎?
2016-03-24
舉報
2016-04-09
線程的原理是,把CPU的一個核心,在時間上分成很多極短的時間片,每個時間片處理一個線程的一部分,當一個時間片完成后,下一個時間片可能選擇任何一個有條件運行的線程來執(zhí)行。
例如,有a,b兩個線程,各自有10個語句,記為a1-a10和b1-b10,且都沒有阻塞
假如我們執(zhí)行
因為a先start,通常會先執(zhí)行a1,當a1執(zhí)行完,且b也已經(jīng)start過后,下一個可能執(zhí)行a2,也可能執(zhí)行b1,具體執(zhí)行誰由程序本身根據(jù)CPU狀況決定,程序員無法指定。因此像是視頻中的程序,哪怕是在同一臺電腦上,每次運行結(jié)果也可能不同。
2016-03-24
因為線程運行需要爭用CPU,因此每次運行的結(jié)果都有可能不同,同一臺電腦尚且如此,不同的電腦,不同的CPU就更不用說了