亚洲精品亚洲人成在线观看麻豆,在线欧美视频一区,亚洲国产精品一区二区动图,色综合久久丁香婷婷

              當(dāng)前位置:首頁(yè) > IT技術(shù) > 移動(dòng)平臺(tái) > 正文

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

              一、Android中常用的IPC通信

              • 管道
              • Socket
              • 共享內(nèi)存
              • 信號(hào)

              二、管道

                管道是一種IPC通信方式,分為有名管道和無(wú)名管道,無(wú)論是有名管道還是無(wú)名管道其原理都是在內(nèi)核開(kāi)辟一塊緩存空間,這段緩存空間的操作是通過(guò)文件讀寫方式進(jìn)行的。

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

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

                有名管道與無(wú)名管道:

                • 有名管道:有名管道的通信可以通過(guò)管道名進(jìn)行通信,進(jìn)程間不需要有關(guān)系。
                • 無(wú)名管道:無(wú)名管道就是匿名管道,匿名管道通信的進(jìn)程必須是父子進(jìn)程。

                半雙工:

              ?  全雙工:

              ?

              ?  在Linux實(shí)現(xiàn)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提供一套網(wǎng)絡(luò)通信的接口。Socket網(wǎng)絡(luò)IPC通信是全雙工的,進(jìn)程間不需要有關(guān)系。

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

              四、共享內(nèi)存

                共享內(nèi)存是IPC通信性能最好的方式,進(jìn)程間通信只需要一次拷貝,適合進(jìn)程間大數(shù)據(jù)通信。

                在Android中應(yīng)用的Surface與SurfaceFlinger的IPC通信采用的共享內(nèi)存方式實(shí)現(xiàn)的。

                在Android中共享內(nèi)存有一個(gè)工具類MemoryFile。

              五、信號(hào)

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

              開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >