首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenHarmony 内核源码分析(Fork篇) | 一次调用,两次返回

笔者第一次看到fork时,说是一次调用,两次返回,当时就懵圈了,多新鲜,真的很难理解.因为这足以颠覆了以往对函数的认知, 函数调用还能这么玩,父进程调用一次,父子进程各返回一次.而且只能通过返回值来判断是哪个进程的返回...调用fork()使得父子进程各返回一次,怎么做到返回两次的,其中到底发生了什么?为什么pid = 0 代表了是子进程的返回? 为什么父进程不需要返回 0 ?...fork在子进程中返回0,子进程仍可以调用getpid函数得到自己的进程id,也可以调用getppid函数得到父进程的id。...为什么是forkfork函数的特点概括起来就是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次。...//系统调用之fork ,建议去 https://gitee.com/weharmony/kernel_liteos_a_note fork 一下?

4410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一个线程调用两次 start()方法会出现什么情况?

    一个线程两次调用 start 会出现什么情况? 一个线程两次调用 start()方法会出现什么情况?谈谈线程的生命周期和状态转移。...在第二次调用 start() 方法的时候,线程可能处于终止或者其他(非NEW)状态,但是不论如何,都是不可以再次启动的。 调用两次 start ?...Java的线程是不允许启动两次的,第二次调用必然会抛岀 IllegalThreadStateEXception,这是一种运行时异常,多次调用 start 被认为是编程错误。...https://en.wikipedia.org/wiki/Green_threads Thread 源码 Thread 源码中大部分逻辑是直接调用 JNI 本地代码。...如果我们持有某个对象的某个 Monitor锁,调用 wait 会让当前线程处于等待状态。直到其他线程 notify 或者 notifyAll。本质上是提供了 Monitor 的释放和获取能力。

    2K30

    【JAVA】一个线程两次调用 start() 方法会出现什么情况?

    本篇博文的重点是,一个线程两次调用 start() 方法会出现什么情况?谈谈线程的生命周期和状态转移。  ...概述 Java 的线程是不允许启动两次的,第二次调用必然会抛出 IllegalThreadStateException,这是一种运行时异常,多次调用 start 被认为是编程错误。...如果我们来看 Thread 的源码,你会发现其基本操作逻辑大都是以 JNI 形式调用的本地代码。 如果我们来看 Thread 的源码,你会发现其基本操作逻辑大都是以 JNI 形式调用的本地代码。...如果我们持有某个对象的 Monitor 锁,调用 wait 会让当前线程处于等待状态,直到其他线程 notify 或者 notifyAll。...后记 以上就是 【JAVA】一个线程两次调用 start() 方法会出现什么情况?

    26930

    【Unity3d游戏开发】unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(转载)

    A和B都不勾选isTrigger,A和B能进入OnCollisionEnter方法但是不能进入OnTriggerEnter方法。...结论: OnCollisionEnter方法必须是在两个碰撞物体都不勾选isTrigger的前提下才能进入,反之只要勾选一个isTrigger那么就能进入OnTriggerEnter方法。...OnCollisionEnter和OnTriggerEnter是冲突的不能同时存在的。 2,OnTriggerEnter和OnCollisionEnter的选择。...如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。 3,一些技巧。 3.1:刚体(Rigidbody)的使用。      ...在OnTrigger模式下:      A和B必须有一个有刚体(Rigidbody),A和B都可以进入OnTriggerEnter方法。 4,知识扩展。

    1.1K20
    领券