日期:2014-05-16  浏览次数:20656 次

linux中多线程和多进程的执行顺序问题,初学,请教几个问题
(一)多进程(假设父进程创建了一个子进程):
     
    fork()后,父进程和子进程谁先进行是由系统的调度算法决定的。这个没有问题。
    那么,问题是:
    (1)程序运行过程中,(书中解释)“父进程和子进程争夺CPU,抢到CPU者执行,另一个挂起等待”,那么父进程和子进程是否会出现交替执行各自的部分代码(不是全部代码)的情况?
    (2)而且在用户看来,执行哪个进程是随机的?

(二)多线程:
    看了些资料,如果主线程没有空闲或者没有等待,新建的线程是不会运行的。这个没有问题。
    (1)那么,新建的几个线程在运行期间,是不是交替执行的呢,而且会出现每次只执行了本线程部分代码,而不是全部的情况?
    (2)在用户看来,执行哪个进程是随即的吗?(根据是CPU在不同线程之间不停交替)

刚刚接触这两个概念,求解答~~~~~~~
linux 多线程 多进程

------解决方案--------------------
这些和系统调度算法,及系统当前负载有关.
并不一定要交替执行,还可以并行,比如多核时.当然多核时,也可能出现交替..
这都是不确定的,所以可以认为是随机的, 至少程序不要依赖于这种调度相关的东西..
在linux操作系统看来,对线程和进程的调度是一样的.