线程调度问题?

std::thread t1( { while(true) std::cout \u0026lt;\u0026lt; "A" \u0026lt;\u0026lt; std::endl; }); std::thread t2( { while(true) std::cout \u0026lt;\u0026lt; "B" \u0026lt;\u0026lt; std::endl; }); t1.join(); t2.join();运行结果:AAAAAAAAAAAAAAAAAAAAAAABAAAAABABBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAAAAAAAAAAAAAAAABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAA
■网友
要看内核的调度机制 有公平的 有抢占的 有优先级 如果题主真的对这个感兴趣 看一些操作系统的书把 今天太晚 有空更新一些具体的
■网友
【线程调度问题?】 cerr不缓冲直接输出,但是标准输出需要同步,那么只要这个实际输出用时大于开始下一次输出的用时,就会严格交替。

■网友
线程和进程的调度机制你首先要弄明白,线程作为cpu调度的单位,操作系统在进行调度的时候并不是队列,而是事件驱动的,也就是说不仅仅是为一个线程服务,这是从微观来说,所以不仅不会出现AAAABBBB的情况,甚至下一次也可能也不出现ABAB的情况,先去了解下那些理论支撑吧!
■网友
如果在Linux上,cat /proc/$LWP/sched ,对比下两个线程的各项数据
■网友
我猜的:OS线程调度在相同优先级的线程中采用round robin算法,而A和B代码基本相同所以运行时间基本相同。所以轮流执行。


    推荐阅读