第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這個 RPC 服務(wù)器不能擴展?

為什么這個 RPC 服務(wù)器不能擴展?

Go
九州編程 2021-07-15 17:01:33
package mainimport (    "fmt"    "net"    "net/rpc"    "sync")type SumInput struct {    UpTo int}type SumOutput struct {    Result int}type RpcServer struct {}func (s *RpcServer) Calculate(in *SumInput, out *SumOutput) error {    for i := 0; i < in.UpTo; i++ {        out.Result += i    }    return nil}func main() {    server := new(RpcServer)    rpc.Register(server)    sock, err := net.Listen("tcp", ":1234")    if err != nil {        panic(err)    }    go func() {        for {            conn, err := sock.Accept()            if err != nil {                panic(err)            }            go rpc.ServeConn(conn)        }    }()    wg := &sync.WaitGroup{}    wg.Add(100)    for i := 0; i < 100; i++ {        go func(i int) {            client, err := rpc.Dial("tcp", "127.0.0.1:1234")            if err != nil {                panic(err)            }            rpcOut := &SumOutput{}            err = client.Call("RpcServer.Calculate", &SumInput{100000000}, rpcOut)            if err != nil {                panic(err)            }            fmt.Println("Got reply: ", rpcOut, i)            wg.Done()        }(i)    }    wg.Wait()}它并行啟動 RPC 服務(wù)器和 100 個客戶端,但它從不使用超過 1 個 CPU,盡管 GOMAXPROCS 已正確配置。那么是什么阻止了它使用更多的 CPU?以及如何改善這種情況?
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經(jīng)驗 獲得超6個贊

我像這樣嘗試了您的示例,并且在我的筆記本電腦上使用所有 8 個 CPU 都可以正常工作

GOMAXPROCS=8 go run rpctest.go

所以猜測你GOMAXPROCS以某種方式搞砸了設(shè)置環(huán)境變量。您是否將其設(shè)置在單獨的行上并忘記導(dǎo)出它?

export GOMAXPROCS=8

通常我使用運行時模塊在程序中設(shè)置它

runtime.GOMAXPROCS(runtime.NumCPU())


查看完整回答
反對 回復(fù) 2021-07-19
  • 1 回答
  • 0 關(guān)注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號