亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

具有 Goroutine 和 C# async/await 相同的效果

具有 Goroutine 和 C# async/await 相同的效果

Go
呼啦一陣風 2022-06-27 15:25:02
如果進程在與我們的應用程序服務器不同的 cpu 上繼續,使用 async/await 方法會非常有用。例如,數據庫查詢在數據庫服務器上運行,查詢運行時無需阻塞應用程序線程。你可以從這里查看。讓我們看看那個 c# 代碼塊 public async Task SaveAsync(User user)    {        using (DataContext ctx = new DataContext())        {            ctx.User.Add(user);            // database does its job while we are waiting            await ctx.SaveChangesAsync();        }    }那么下面的 goroutine 代碼有同樣的效果嗎?func (u *User) Create(userModel *model.User) error {var err errorvar wg sync.WaitGroup//or channel can be used for sync wg.Add(1)  //wg := make(chan int)go func() {    defer wg.Done(). //wg <- 1    _, err = u.Transaction.User.        Create().        SetAge(userModel.Age).        SetName(userModel.Name).        SetIsDeleted(false).        Save(u.Ctx)   }()wg.Wait() //    <-wgif err !=nil{    return err}return nil}
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

Goroutines 和 async/await 是異步編程的不同方法。在引擎蓋下,您有 P 進程 M CPU 內核和 G 協程。您的語言運行時操作它們 - 檢查何時應該停止(未計劃從實際進程,因此 CPU 內核)和其他應該被安排到內核。

什么方法更好?這取決于開發商。至于我 async/await 有更多的語法糖,goroutines 在編程方面更明確。所以第一個可以更簡潔,第二個 - 在諸如此類的復雜情況下更容易理解select {..}。


查看完整回答
反對 回復 2022-06-27
  • 1 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號