我正在研究线程,我不确定我是否理解了一些概念。抢占和让利之间的区别是什么?到目前为止,我知道抢占是一种被迫的让步,但我不确定它实际上是什么意思。谢谢你的帮助。
发布于 2012-03-22 07:54:22
抢占是指一个线程停止另一个线程运行,以便它可以运行。
当线程自愿放弃处理器时间时,就会发生让步。
发布于 2012-03-22 08:05:11
看看这些..。
http://en.wikipedia.org/wiki/Preemption_(computing)
http://en.wikipedia.org/wiki/Thread_(computing)
发布于 2012-03-22 08:29:36
不同之处在于进入操作系统的方式。
“reads”是一个软件中断AKA系统调用,这是可能导致正在运行的线程集发生变化的众多系统调用之一(还有许多其他系统调用可以做到这一点--阻塞读取、同步调用)。ready ()是从正在运行的线程中调用的,并且可能会导致另一个相同优先级的就绪(但未运行)线程正在运行,而不是正在执行调用的线程-如果有调用线程的话。
yield()的确切行为在某种程度上依赖于硬件/OS/语言。除非您正在开发低级的无锁线程通信机制,而且您非常擅长它,否则最好就不要去想best ()了。
抢占是中断一个线程并在其位置上调度另一个线程的行为。它只能在硬件中断后发生。当硬件中断时,进入其驱动程序。驱动程序可以决定它可以有效地使线程准备就绪(例如,线程在对驱动程序的read()调用中被阻塞,并且驱动程序已经积累了一个很好的、大的数据缓冲区)。驱动程序可以通过发信号通知信号量并退出via来完成此操作。操作系统(它提供了一个入口点来实现这一目的)。该驱动程序退出路径导致重新调度,并且可能使读线程运行,而不是在中断之前正在运行的某个其他线程-另一个线程已被抢占。本质上很简单,当操作系统决定中断-返回到与被中断的线程不同的线程集时,就会发生抢占。
https://stackoverflow.com/questions/9814549
复制相似问题