• 當前位置:首頁 > IT技術 > 移動平臺 > 正文

    Android常用的IPC通信
    2021-10-04 16:40:28

    一、Android中常用的IPC通信

    • 管道
    • Socket
    • 共享內存
    • 信號

    二、管道

      管道是一種IPC通信方式,分為有名管道和無名管道,無論是有名管道還是無名管道其原理都是在內核開辟一塊緩存空間,這段緩存空間的操作是通過文件讀寫方式進行的。

      管道為分半雙工和全雙工:

      • 半雙工:半雙工管道是單向通信,進程1只能向管道寫數據,進程2只能從管道讀取數據。只有一個代表讀或者寫的FD(文件描述符)。
      • 全雙工:全雙工管道是雙向通信,有兩個文件描述符,代表讀和寫。

      有名管道與無名管道:

      • 有名管道:有名管道的通信可以通過管道名進行通信,進程間不需要有關系。
      • 無名管道:無名管道就是匿名管道,匿名管道通信的進程必須是父子進程。

      半雙工:

    ?  全雙工:

    ?

    ?  在Linux實現pipe:

    public static void main(String[] args) {
        int fd[2];
        char buffer[SIZE];
    
        pipe(fd);
    
        pid_t pid = fork();
        if (pid == 0) {
            close(fd[1]);
            read(fd(0), buffer, SIZE);
        } else if (pid > 0) {
            close(fd[0]);
            write(fd[1], "Hello", 5);
        }
    }

    ?

    三、Socket

      Socket提供一套網絡通信的接口。Socket網絡IPC通信是全雙工的,進程間不需要有關系。

      在Android中AMS與Zygote通信采用的Socket通信。

    四、共享內存

      共享內存是IPC通信性能最好的方式,進程間通信只需要一次拷貝,適合進程間大數據通信。

      在Android中應用的Surface與SurfaceFlinger的IPC通信采用的共享內存方式實現的。

      在Android中共享內存有一個工具類MemoryFile。

    五、信號

    本文摘自 :https://www.cnblogs.com/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码