我讀sleep()
把當前正在運行的線程休眠。這是否也適用於多核處理器?我不確定,但它認爲多核處理器會有多個「當前正在運行的線程」。多核處理器上當前正在運行的線程是什麼?
回答
我讀了Sleep()把當前正在運行的線程休眠。這對多核處理器也有效嗎?
是的。 sleep(...)
會把它的執行程序線程作爲參數傳遞的時間。
但它認爲多核處理器會有多個「當前正在運行的線程」。
是的。多核處理器將在同一時刻運行多個線程。
多核處理器上當前正在運行的線程是什麼?
看到這個:Semantics of Thread.currentThread() on multicore/multi processor systems?
Thread.CurrentThread()
將在一定的線程來執行。無論運行哪個處理器,都會返回同一個線程。
睡眠只讓線程進入睡眠狀態。
是的,在多核處理器上也是如此,因爲多線程不一定需要多核PC。單核處理器也可以處理多個進程,不是嗎?
它可以,但它通過時間片和其他技術來僞造併發。在單核CPU中,總是隻有一個當前正在運行的進程,並且只有一個當前正在運行的線程。維基百科有一個很好的網頁:http://en.wikipedia.org/wiki/Multitasking – ckruse 2013-03-19 10:58:52
我知道:)。我只是想讓他思考。爲了他的問題,我不想深入細節。 – 2013-03-19 11:32:12
操作系統向核心提供'方向',或更多。所以例如Windows可以指導多個內核。 Windows可以運行多個進程。時間切片爲每個進程提供一定的時間來執行其任務。也就是說,一個進程被給予一段時間來在內核上執行它的計算。由於Windows(在這個例子中)是先發制人的(就像linux一樣),它將決定將哪個進程放在內核上以及多長時間。 現在一個進程可以有多個線程。每個線程就像CPU上的一個「進程」。所以再次,先發制人的OS決定哪個線程在什麼時候運行。在quad(4)內核上,您只能同時運行4個進程/線程。在一個核心上,你將能夠運行4個進程,但是當時只能運行一個進程。
例:
當有4個過程與四核各2個線程。 Windows可以決定在每個內核上放置一個進程。 Windows將決定每個內核將在分配給該內核的進程的兩個線程之間切換。現在,當您將這兩個線程中的一個線程置於Sleep狀態時,Windows在線程進入睡眠狀態時不必在線程之間切換,並且可以花費所有時間執行一個線程。與此同時,其他核心上加載的其他3個進程的線程切換仍在繼續。
當然,它比我上面總結的要複雜得多。
- 1. 多核處理器上的多線程
- 2. 爲什麼單個線程進程在多個處理器/內核上執行?
- 3. 多核處理器的多線程
- 4. 在處理器內核上如何執行多個線程
- 5. 當前線程忙於Tomcat狀態的處理是什麼?
- 6. 多核心處理器中的線程
- 7. 用多線程處理文件的正確方法是什麼?
- 8. 在多線程處理中,「預熱」線程究竟是什麼?
- 9. 多線程程序在單核處理器上無法正常工作
- 10. 具有單核處理器和多核處理器的單線程代碼的多線程代碼
- 11. 在多核處理器上本地運行Apache flink
- 12. 多核處理器上的Haskell運行時的結構
- 13. 只能在一個處理器上進行運行只能在其他處理器上運行線程嗎?
- 14. 四核處理器運行超過8個線程
- 15. 在IIS上運行的ASP.net頁面是否使用多核處理器?
- 16. 多核處理器中的多線程應用程序
- 17. Java多線程 - 分配線程到處理器核心
- 18. 在什麼線程上執行事件處理程序?
- 19. 在多核處理器上實時操作系統中的多線程調度
- 20. 運行給定線程的核心是什麼?
- 21. 註冊多個處理程序正在運行的服務器
- 22. 如何在多核處理器上完成線程的上下文切換?
- 23. 在多線程上運行JAVAEE7批處理時出錯
- 24. 在UI線程上運行什麼?
- 25. 什麼不在主線程上運行?
- 26. 爲什麼在主線程上運行?
- 27. 單對多線程的單核處理器的編程
- 28. 處理:爲什麼setup()運行多次?
- 29. CUDA warp中的線程是否在多處理器上並行執行?
- 30. 異步調用的核心是python線程還是多處理?
我期望它會影響執行特定代碼段的線程。 – 2013-03-19 10:53:33