我读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. 在多线程处理中,“预热”线程究竟是什么?
- 6. 具有单核处理器和多核处理器的单线程代码的多线程代码
- 7. 在IIS上运行的ASP.net页面是否使用多核处理器?
- 8. 多核处理器中的多线程应用程序
- 9. Java多线程 - 分配线程到处理器核心
- 10. 在什么线程上执行事件处理程序?
- 11. 在多核处理器上实时操作系统中的多线程调度
- 12. 运行给定线程的核心是什么?
- 13. 如何在多核处理器上完成线程的上下文切换?
- 14. 在多线程上运行JAVAEE7批处理时出错
- 15. CUDA warp中的线程是否在多处理器上并行执行?
- 16. 处理:为什么setup()运行多次?
- 17. 如何在boost中找到当前正在运行的线程?
- 18. Android上的多线程处理程序的最佳做法是什么?
- 19. 为什么我的点击处理程序正在文档上运行?
- 20. 在当前正在运行的进程上执行操作
- 21. 在JAVA中处理当前正在执行的进程
- 22. 在task_struct执行当前宏返回的多核心机器上?
- 23. 多核处理器上的Android错误
- 24. 使用多核处理器需要多线程算法吗?
- 25. 获取GNU Octave以使用多核处理器。 (多线程)
- 26. 从ExecutorService获取当前正在运行的线程对象
- 27. 什么是在Azure中执行多线程的正确方法
- 28. 线程运行中的处理程序
- 29. 如何停止当前线程以外的所有正在运行的线程?
- 30. 在多核处理器中并行编程的性能测量
我期望它会影响执行特定代码段的线程。 – 2013-03-19 10:53:33