日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFramegproc-進程通信

目前?gproc?組件提供的進程通信特性屬于實驗性特性!

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設、網(wǎng)站重做改版、洛龍網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為洛龍等各大城市提供網(wǎng)站開發(fā)制作服務。

不要通過共享內存來通信,而應該通過通信來共享內存。

常見的進程通信方式有5種:管道/信號量/共享內存/共享文件/?Socket?。按照常見的并發(fā)架構的設計來講,我們盡可能地少用鎖機制,包括共享內存/共享文件其實都是需要依靠鎖機制才能保證數(shù)據(jù)流的正確性,因為鎖機制帶來的維護復雜度往往會比其帶來的好處更多。信號量常用在?*nix?系統(tǒng)中,跨平臺性比較差。管道雖然實現(xiàn)起來比較簡單,但是在穩(wěn)定性上并沒有?Socket?機制好。因此,?gproc?實現(xiàn)的進程通信采用的是?Socket?機制。但是需要注意的是,通信的兩個進程都需要使用?gproc?模塊來實現(xiàn)發(fā)送&接收數(shù)據(jù)。

?gproc?的進程通信API非常簡便,只需通過以下兩個方法實現(xiàn):

func Send(pid int, data []byte) error
func Receive() *Msg

我們通過?Send?方法向指定的進程發(fā)送數(shù)據(jù)(每調用一次相當于發(fā)送一條消息),在指定的進程中可以通過?Receive?方法獲得數(shù)據(jù)。其中,?Receive?方法提供了類似消息隊列的形式來收取其他進程傳遞的數(shù)據(jù),當隊列為空時,該方法將會阻塞等待。

我們來看一個進程間通信的基本使用示例:

package main

import (
	"fmt"
	"github.com/GOgf/gf/v2/os/gproc"
	"github.com/gogf/gf/v2/os/gtime"
	"github.com/gogf/gf/v2/os/gtimer"
	"os"
	"time"
)

func main() {
	fmt.Printf("%d: I am child? %v\n", gproc.Pid(), gproc.IsChild())
	if gproc.IsChild() {
		gtimer.SetInterval(time.Second, func() {
			gproc.Send(gproc.PPid(), []byte(gtime.Datetime()))
		})
		select {}
	} else {
		m := gproc.NewManager()
		p := m.NewProcess(os.Args[0], os.Args, os.Environ())
		p.Start()
		for {
			msg := gproc.Receive()
			fmt.Printf("receive from %d, data: %s\n", msg.SendPid, string(msg.Data))
		}
	}
}

該示例中,我們的主進程啟動時創(chuàng)建了一個子進程,該子進程每隔1秒鐘向主進程發(fā)送當前的時間,主進程收取到子進程發(fā)送的參數(shù)后輸出到終端上。執(zhí)行后,終端輸出的內容如下:

29978: I am child? false
29984: I am child? true
receive from 29984, data: 2018-05-18 15:01:00
receive from 29984, data: 2018-05-18 15:01:01
receive from 29984, data: 2018-05-18 15:01:02
receive from 29984, data: 2018-05-18 15:01:03
receive from 29984, data: 2018-05-18 15:01:04
...


當前標題:創(chuàng)新互聯(lián)GoFrame教程:GoFramegproc-進程通信
URL鏈接:http://www.5511xx.com/article/dpiggsj.html