golang多進(jìn)程庫pagent

地址:https://github.com/adwpc/pagent

pagent是一個(gè)多進(jìn)程模型的golang庫,具有以下特點(diǎn):

簡單: 父子進(jìn)程只通過stdin和stdout來交互

安全: 多進(jìn)程很安全,子進(jìn)程掛掉一個(gè)不影響其他子進(jìn)程

解耦:子進(jìn)程交互和業(yè)務(wù)分離

例子:

package main

import (

? ? "fmt"

? ? "time"

? ? "github.com/adwpc/pagent"

)

type MyBiz struct {

? ? pagent.Master

}

func NewBiz() *MyBiz {

? ? return &MyBiz{}

}

func (a *MyBiz) BizRunning(id, str string) error {

? ? fmt.Println("[MyBiz BizRunning] str=" + str)

? ? return nil

}

func (a *MyBiz) BizFinish(id string, err error) error {

? ? fmt.Println("[MyBiz BizFinish] id=" + id)

? ? return err

}

func main() {

? ? a := NewBiz()

? ? fmt.Println("worker1-------------------------")

? ? a.GetWorker("worker1").Start("bash", a.BizRunning, a.BizFinish)

? ? a.GetWorker("worker1").Input("ls")

? ? time.Sleep(1 * time.Second)

? ? a.DelWorker("worker1")

? ? fmt.Println("worker2-------------------------")

? ? a.GetWorker("worker2").Start("ifconfig", nil, a.BizFinish)

? ? time.Sleep(1 * time.Second)

? ? a.DelWorker("worker2")

? ? fmt.Printf("end!----------------------------")

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 01.{ 換行: Opening Brace Can't Be Placed on a Separate Lin...
    碼農(nóng)不器閱讀 2,478評論 0 14
  • fmt格式化字符串 格式:%[旗標(biāo)][寬度][.精度][arg索引]動(dòng)詞旗標(biāo)有以下幾種:+: 對于數(shù)值類型總是輸出...
    皮皮v閱讀 1,223評論 0 3
  • 選擇題 [primary] 下面屬于關(guān)鍵字的是() A. func B. def C. struct D. cla...
    盤木閱讀 1,875評論 0 29
  • 分別十一年,孩子不認(rèn)識父親。想來寂寞兩邊人。 外面下著雨,豆大的雨點(diǎn)密布天空,風(fēng)四處呼嘯。我還是騎車去了新華書店,...
    碧蓮天閱讀 306評論 1 5
  • 我們寫作過程中會有很多情況下,總是有沒有東西可寫的情況,不是因?yàn)闆]有什么可寫,而因?yàn)椴恢涝摫磉_(dá)什么思想即所謂的靈...
    張桂林閱讀 450評論 0 12

友情鏈接更多精彩內(nèi)容