线程,yield让出cpu调度

public class Yield01 extends Thread {
    public static void main(String[] args) {
        new Yield01().start();
        for (int i = 0; i < 1000; i++) {
            if(i%5==0){
                Thread.yield();
            }
            System.out.println(i+": @[email protected]");
        }
    }

    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            if(i%5==0){
                Thread.yield();
            }
            System.out.println(i+": yield");
        }
    }

}

结果:
(注,不是交替执行的。这里只是像而已)

0: @[email protected]
0: yield
1: @[email protected]
1: yield
2: @[email protected]
2: yield
3: @[email protected]
3: yield
4: @[email protected]
4: yield
5: @[email protected]
5: yield
6: @[email protected]
6: yield
7: @[email protected]
7: yield
8: @[email protected]
8: yield
9: @[email protected]
9: yield
10: @[email protected]
10: yield
11: @[email protected]
11: yield
12: @[email protected]
12: yield
13: @[email protected]
13: yield
14: @[email protected]
14: yield
15: @[email protected]
15: yield
16: @[email protected]
16: yield
17: @[email protected]
17: yield
18: @[email protected]
18: yield
19: @[email protected]
19: yield
20: @[email protected]
20: yield
21: @[email protected]
21: yield
22: @[email protected]
22: yield
23: @[email protected]
23: yield
24: @[email protected]
24: yield
25: @[email protected]
25: yield
26: @[email protected]
26: yield
27: @[email protected]
27: yield
28: @[email protected]
28: yield
29: @[email protected]
29: yield
30: @[email protected]
30: yield
31: @[email protected]
31: yield
32: @[email protected]
32: yield
33: @[email protected]
33: yield
34: @[email protected]
34: yield
35: @[email protected]
35: yield
36: @[email protected]
36: yield
37: @[email protected]
37: yield
38: @[email protected]
38: yield
39: @[email protected]
39: yield
40: @[email protected]
40: yield
41: @[email protected]
41: yield
42: @[email protected]
42: yield
43: @[email protected]
43: yield
44: @[email protected]
44: yield
45: @[email protected]
45: yield
46: @[email protected]
46: yield
47: @[email protected]
47: yield
48: @[email protected]
48: yield
49: @[email protected]
49: yield
50: @[email protected]
50: yield
51: @[email protected]
51: yield
52: @[email protected]
52: yield
53: @[email protected]
53: yield
54: @[email protected]
54: yield
55: @[email protected]
55: yield
56: @[email protected]
56: yield
57: @[email protected]
57: yield
58: @[email protected]
58: yield
59: @[email protected]
59: yield
60: @[email protected]
60: yield
61: @[email protected]
61: yield
62: @[email protected]
62: yield
63: @[email protected]
63: yield
64: @[email protected]
64: yield
65: @[email protected]
65: yield
66: @[email protected]
66: yield
67: @[email protected]
67: yield
68: @[email protected]
68: yield
69: @[email protected]
69: yield
70: @[email protected]
70: yield
71: @[email protected]
71: yield
72: @[email protected]
72: yield
73: @[email protected]
73: yield
74: @[email protected]
74: yield
75: @[email protected]
75: yield
76: @[email protected]
76: yield
77: @[email protected]
77: yield
78: @[email protected]
78: yield
79: @[email protected]
79: yield
80: @[email protected]
80: yield

时间: 2024-11-07 12:54:18

线程,yield让出cpu调度的相关文章

RT-Thread 线程的让出

前面两个例子演示的线程调度是由系统“主动干预”的情况的线程切换,其实我们也可以根据实际情况,采用主动让出 CPU 使用权.RT-Thread 中的系统函数: rt_thread_yield(),可以让调用它的线程暂时让出 CPU 的使用权,而使下一个最高优先级的线程得以运行,但这时调用 rt_thread_yield()的线程还保持的是就绪态.这和“孔融让梨”有点像:这个梨我不吃,下一个梨我可就不客气了. #include <rtthread.h> #include <stm32f10x

进程与线程之间的关系和区别 及 CPU调度

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 进程和线程的关系: (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程. (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源. (3)处理机分给线程,即真正在处理机上运行的是线程. (4)线程在执行过程中,需要协作同步.不同进程的线程间要利用消息通信的办法实现同步.

SMP CPU调度 &nbsp; 用于多道程序

SMP CPU调度   用于多道程序 SMP(Symmetric Multi-Processor) :对称多处理器SMP 服务器的主要特征是共享,系统中所有资源 (CPU .内存. I/O 等 ) 都是共享的.也正是由于这种特征,导致了 SMP 服务器的主要问题,那就是它的扩展能力非常有限.对于 SMP 服务器而言,每一个共享的环节都可能造成 SMP 服务器扩展时的瓶颈,而最受限制的则是内存.由于每个 CPU 必须通过相同的内存总线访问相同的内存资源,因此随着 CPU 数量的增加,内存访问冲突将

【转】CPU调度

转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度   用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把多个进程导入内存,使得一个进程在CPU中执行I/O时,一个进程用来填补CPU的时间. 通常进程都是在CPU区间和I/O区间之间转换. CPU调度程序称为短期调度程序,从内存调度到CPU. 在内存中等待的就绪队列的节点是PCB.有许多不同的队列实现方法. 抢占调度和非抢占调度(协作):前者为一个进程还

Linux进程或线程绑定到CPU

Linux进程或线程绑定到CPU 为了让程序拥有更好的性能,有时候需要将进程或线程绑定到特定的CPU,这样可以减少调度的开销和保护关键进程或线程. 进程绑定到CPU Linux提供一个接口,可以将进程绑定到特定的CPU: #include <sched.h> int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *mask); int sched_getaffinity(pid_t pid, size_t cpu

操作系统概念学习笔记 10 CPU调度

操作系统概念学习笔记 10 CPU调度 多道程序操作系统的基础.通过在进程之间切换CPU,操作系统可以提高计算机的吞吐率. 对于单处理器系统,每次只允许一个进程运行:任何其他进程必须等待,直到CPU空闲能被调度为止. 多道程序的目标是在任何时候都有某些进程在运行,以使CPU的使用率最大化.多道程序的思想较为简单,当一个进程必须等待时,操作系统会从该进程拿走CPU的使用权,而将CPU交给其他进程. CPU-I/O 区间周期 CPU的成功调度依赖于进程的如下属性: 进程执行由CPU执行周期和I/O等

6.CPU调度

总论:所有的程序都是CPU和I/O等待交替执行 CPU调度器的操作时机 调用CPU调度器的时机,通常发生在 某一进程从执行状态转化为等待状态 某一进程从执行状态转化为就绪状态 某一进程从等待状态转为就绪状态 某一进程终止 注意,调度时机不限于此4种情况,有非抢占式调度,和抢占式调度 CPU调度器 决定了将CPU分配给谁 后续操作就是, CPU分配器将CPU控制权交给该进程,操作内容通常包括 上下文切换 从内核态转移至用户态 跳转至用户程序中PC寄存器所指示的位置 分配延迟 CPU分配暂停前一进程

ds6000com+Linux的CPU调度19908836661服务器的性能

我们可以在文章的开始就列出一个列表,列出可能影响Linux操作系统性能的一些调优参数,但这样做其实并没有什么价值.因为性能调优是一个非常困难的任务,它要求对硬件.操作系统.和应用都有着相当深入的了解.如果性能调优非常简单的话,那些我们要列出的调优参数早就写入硬件的微码或者操作系统中了,我们就没有必要再继续读这篇文章了.正如下图所示,服务器的性能受到很多因素的影响. 当面对一个使用单独IDE硬盘的,有20000用户的数据库服务器时,即使我们使用数周时间去调整I/O子系统也是徒劳无功的,通常一个新的

[OS] CPU调度

调度准则 为了比较CPU调度算法,分析员提供了许多准则,用于比较的特征对确定最佳算法有很大影响.这些准则包括: ·CPU使用率:需要使CPU尽可能忙. ·吞吐量:一个时间单元内完成进程的数量. ·周转时间:从进程提交到进程完成的时间. ·等待时间:进程在就绪队列中等待所花时间之和. ·响应时间:对于分时系统,从提交请求到第一次响应的时间. 调度算法 ·先来先服务调度(FCFS) 采用这种方案,先请求CPU的进程先分配到CPU.FCFS策略可以用FIFO队列来容易的实现. 缺点:1.周转时间与响应