sylixos 线程优先级是越大越高?
优先级越高排程器就会给它越多的CPU执行时间,但请注意:如果有多个线程在等待一个机锁的时候,并不是优先级越高就可以越早执行。
优先级这个东西,也是和操作系统相关联的,你虽然在程序里面设置了优先级,但是操作系统也有可能把它们的优先级当成是一样的,因为操作系统的优先级一般就三种,不会像程序里面这样会设置0-10级。
与线程相关的程序几乎都和操作系统有关系,要写出完全正确的线程程序,必须要了解操作系统的知识。线程的输出结果确实有很多不确定性。
线程的程序结果..跟操作系统的调度方法和电脑配置都有很大关系的..
所以运行几次结果不一样也不要慌张..反而这才是正常现象..
什么是线程优先级,它在线程调度中的作用?
每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现,这个实现是和操作系统相关的(OSdependent)。
可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行。
线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先级。
如何可以永久设置一个程序进程的优先等级?
应该是系统自定的,还是不要变了
问:进程中有一个“设置优先级”,我查看了一下,发现都是“标准”,那么是不是需要对那些进程手工调整一下呢?
答:优先级是系统自动来调整的,一般无需我们自己调整。不过遇到特殊情况,调整一下对电脑使用有好处。比如你想一边看电影一边打文字或干别的什么话,那么就调整那个电影播放器的进程,设置为“低于标准”,系统提示“可能会导致系统不稳定”,不要管它,选“是”继续。这样前台程序就会比后台程序(播放软件)优先,系统会让前台程序优先执行,前台程序空闲的时候再让后台程序满负荷工作。这样就可以充分占用前台程序剩下的系统资源,达到对系统资源的高效利用。
WINDOWS核心编程第7章讲的是线程的调度、优先级和亲缘性,其中dwpc定义为DWORD类型,指向对应进程的优先级值, DWORD dwpc;GetPriorityClass定义为全局函数,返回进程的优先级;SetPriorityClass()函数设置当前进程的优先级。
线程中sleep方法和yeild方法的区别?
1.sleep()方法会给其他线程运行的机会,而不管其他线程的优先级,因此会给较低优先级的线程运行的机会;yeild()方法只会给优先级相同的或者比自己高的线程运行的机会.
2.sleep()方法声明抛出InterruptionException异常,而yeild()方法没有声明抛出任何异常.
3.sleep()方法比yeild()方法具有更高的可移植性.
4.sleep()方法使线程进入阻塞状态,而yeild()方法使线程进入就绪状态.
5.sleep可以指定睡眠的时间,而yeild不行。也就是说yeild调用之后,很可能马上又会回到运行状态