QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

热搜: eclipse ecos stm32 ecos源码 如何获取ecos ecos源代码 code goAhead redboot
搜索
发新帖

8

主题

2

听众

136

积分

初级工程师

Rank: 2Rank: 2

  • TA的每日心情
    开心
    2012-11-21 21:47
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    最后登录
    2013-5-26
    威望
    0
    金钱
    118
    贡献
    0
    注册时间
    2012-11-12
    积分
    136
    帖子
    8
    主题
    8
    精华
    2
    UID
    19
    发表于 2012-11-21 22:18:53 |显示全部楼层
    更多
    本帖最后由 yirong125 于 2012-11-21 22:19 编辑

    如题。父进程如果有多个线程,是否也被子进程继承。

    如果被继承,那么,当父进程有一个线程在执行写独享的文件的时候,怎么处理的呢?
    如果没有被继承,那么,由于线程资源也是属于父进程的资源,为什么不继承呢?





    这一次注定成为经典……
    回复

    使用道具 举报

    84

    主题

    16

    听众

    2901

    积分

    超级版主

    Rank: 8Rank: 8Rank: 8Rank: 8

    该用户从未签到

    最后登录
    2015-5-31
    威望
    0
    金钱
    2389
    贡献
    0
    注册时间
    2012-5-1
    积分
    2901
    帖子
    492
    主题
    84
    精华
    4
    UID
    2
    发表于 2012-11-21 22:21:22 |显示全部楼层

    回帖奖励 +1

    不可能继承,因为fork后子进程只能有一个线程。道理其实很简单,如果需要继承所有线程,简直是无法想象的。比如,进程A里,线程A_1正在操作一个链表,这时线程A_2正在操作一个栈,而线程A_3fork出了进程B, 难道要让B_1应该在哪里接着运行呢?是操作A_1的链表还是操作A_2的栈?

    根据Unix 98标准, fork后,子进程只能有一个线程:

    • A process shall be created with a single thread. If a multi-threaded process calls fork(), the new process shall contain a replica of the calling thread and its entire address space, possibly including the states of mutexes and other resources. Consequently, to avoid errors, the child process may only execute async-signal-safe operations until such time as one of the exec functions is called. [THR]   Fork handlers may be established by means of the pthread_atfork() function in order to maintain application invariants across fork() calls.   
    • When the application calls fork() from a signal handler and any of the fork handlers registered by pthread_atfork() calls a function that is not asynch-signal-safe, the behavior is undefined.
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员 新浪微博账号登陆

    无觅相关文章插件

    申请友链|手机版|关于本站|站点帮助|eCos技术网 ( 粤ICP备12094833号-1 )   

    GMT+8, 2016-8-6 03:55 , Processed in 0.275831 second(s), 37 queries .

    Powered by Discuz!2.5 X2.5

    © 2001-2012 Comsenz Inc.

    回顶部