回 帖 发 新 帖 刷新版面

主题:[原创]多线程编程里有个问题

LINUX下的   多线程编程里有个问题  请教
int main()
{
   int n=fork();
    if(n)
    {
       父进程
    }
    else
    {
        子进程
     }  
}

C里的if  与else语句是 一个时间内只允许执行一个语句,另一个语句是不会执行的,但是 这个  多线程编程下  是 父与子 进程 交错执行。
   这是怎么回事啊? 


是不是:
执行a的时候,a发现自己被执行了,但是不是被它自己执行的,于是它就认为自己是父进程,转入父进程的处理程序;这段程序创建了一个子进程,子进程的程序还是a,但不同的是它是被a(同一个程序的不同进程)执行的,所以它转入了子进程的那个分支,处理子进程的任务 
 
不是很理解。

回复列表 (共1个回复)

沙发

if(n)
    {
       父进程
    }
    else
    {
        子进程
     }  

这段代码被子、父进程并发执行,只是fork的返回值n不同,对于子进程n是0,对于父进程是子进程的pid

我来回复

您尚未登录,请登录后再回复。点此登录或注册