最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于golang channel實現(xiàn)的輕量級異步任務(wù)分發(fā)器示例代碼

 更新時間:2018年07月02日 16:49:19   作者:honhon  
這篇文章主要給大家介紹了關(guān)于基于golang channel實現(xiàn)的輕量級異步任務(wù)分發(fā)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

有時候我們?yōu)榱烁玫睦糜嬎銠C資源,可以把一些耗時長的任務(wù)隊列化異步執(zhí)行。舉個對應(yīng)簡單的生活中例子就是大多數(shù)餐廳里面點菜都是先找地方做,看了菜單選好菜之后找服務(wù)員點菜,此時再等待菜做好送上來。這里餐廳廚房就是計算機的底層資源,菜就是待執(zhí)行的任務(wù),而服務(wù)員就是我們的go channel。

關(guān)于消息隊列有很多好用的框架,如nsq,nats,kafka等等。但有時我們只需要輕量級的異步任務(wù)工具,而不需要太過于"復(fù)雜"的框架相對于我們的需求來說。于是借鑒一些項目框架,做了一個小小的封裝。

項目地址: https://github.com/chenhg5/go...  (本地下載

go-task的使用很簡單,只需要初始化一個任務(wù)處理器,然后往處理器里面添加任務(wù),然后處理器就會異步地去執(zhí)行了。

舉餐廳的例子,代碼如下:

package main

import (
 "runtime"
 "fmt"
 "time"
 "github.com/chenhg5/go-task"
)

func main() {

 // init
 task.InitTaskReceiver(runtime.NumCPU())

 // 有十個人同時點菜
 for i := 0; i < 10; i++ {
  task.AddTask(task.NewTask(
   map[string]interface{}{
    "paramA" : "value",
   }, // 參數(shù)
   []task.FacFunc{ordering, cooking, deliverying}, // 任務(wù)列表
   -1), // -1代表任務(wù)不超時
  )
 }

 time.Sleep(time.Second * 50)
}

// 下單任務(wù)
func ordering(uuid string, param map[string]interface{}) (string, error) {
 fmt.Println("i am ordering")
 time.Sleep(time.Second * 1)
 return uuid, nil
}

// 做菜任務(wù)
func cooking(uuid string, param map[string]interface{}) (string, error) {
 fmt.Println("i am cooking")
 time.Sleep(time.Second * 1)
 return uuid, nil
}

// 配送任務(wù)
func deliverying(uuid string, param map[string]interface{}) (string, error) {
 fmt.Println("i am deliverying")
 time.Sleep(time.Second * 1)
 return uuid, nil
}

跑一遍,就會看到:

i am ordering
i am ordering
i am ordering
i am ordering
i am ordering
i am ordering
i am ordering
i am ordering
i am cooking
i am cooking
i am cooking
i am cooking
i am cooking
i am cooking
i am cooking
i am cooking
i am deliverying
i am deliverying
i am deliverying
i am deliverying
i am deliverying
i am deliverying
i am deliverying
i am deliverying
i am ordering
i am ordering
i am cooking
i am cooking
i am deliverying
i am deliverying

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • go Antlr重構(gòu)腳本解釋器實現(xiàn)示例

    go Antlr重構(gòu)腳本解釋器實現(xiàn)示例

    這篇文章主要為大家介紹了go Antlr重構(gòu)腳本解釋器實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Go路由注冊方法詳解

    Go路由注冊方法詳解

    Go語言中,http.NewServeMux()和http.HandleFunc()是兩種不同的路由注冊方式,前者創(chuàng)建獨立的ServeMux實例,適合模塊化和分層路由,靈活性高,但啟動服務(wù)器時需要顯式指定,后者使用全局默認的http.DefaultServeMux,適合簡單場景,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • Go Gin框架中的binding驗證器使用小結(jié)

    Go Gin框架中的binding驗證器使用小結(jié)

    Gin框架中的binding驗證器為我們提供了簡便的數(shù)據(jù)綁定和驗證功能,通過合理使用binding和validate標簽,我們可以確保API接口的數(shù)據(jù)合法性和完整性,這篇文章主要介紹了Go Gin框架中的binding驗證器使用指南,需要的朋友可以參考下
    2024-07-07
  • Go語言微服務(wù)中實現(xiàn)鏈路追蹤

    Go語言微服務(wù)中實現(xiàn)鏈路追蹤

    在微服務(wù)架構(gòu)中,鏈路追蹤技術(shù)可以幫助我們跟蹤請求在各個服務(wù)之間的傳播路徑,本文就來介紹一下Go語言微服務(wù)中實現(xiàn)鏈路追蹤,感興趣的可以了解一下
    2024-12-12
  • Go語言程序查看和診斷工具詳解

    Go語言程序查看和診斷工具詳解

    這篇文章主要為大家詳細介紹了Go語言程序查看和診斷工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Go語言sync.Map詳解及使用場景

    Go語言sync.Map詳解及使用場景

    Go語言中的sync.Map是一個高效的并發(fā)安全映射結(jié)構(gòu),適用于高并發(fā)讀多寫少的場景,它通過讀寫分離、無鎖讀取路徑、寫入時的鎖保護等機制,提高了讀取性能并減少了鎖競爭,sync.Map不需要手動管理鎖,降低了編程復(fù)雜性,適合需要簡單并發(fā)訪問的場合
    2024-10-10
  • Golang接入釘釘通知的示例代碼

    Golang接入釘釘通知的示例代碼

    本文主要介紹了Golang接入釘釘通知的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Go語言入門學(xué)習(xí)之Channel通道詳解

    Go語言入門學(xué)習(xí)之Channel通道詳解

    go routine可以使用channel來進行通信,使用通信的手段來共享內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于Go語言入門學(xué)習(xí)之Channel通道的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Go語言基礎(chǔ)if條件語句用法及示例詳解

    Go語言基礎(chǔ)if條件語句用法及示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)if條件語句的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-11-11
  • idea搭建go環(huán)境實現(xiàn)go語言開發(fā)

    idea搭建go環(huán)境實現(xiàn)go語言開發(fā)

    這篇文章主要給大家介紹了關(guān)于idea搭建go環(huán)境實現(xiàn)go語言開發(fā)的相關(guān)資料,文中通過圖文介紹以及代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用go具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01

最新評論

古蔺县| 赫章县| 沙洋县| 遂溪县| 永康市| 电白县| 漳平市| 田林县| 雷州市| 和平县| 紫云| 布尔津县| 那曲县| 莫力| 保靖县| 东明县| 察雅县| 沙洋县| 杨浦区| 姜堰市| 鹿泉市| 白沙| 佛山市| 河曲县| 栾川县| 南开区| 永泰县| 赫章县| 香港| 本溪市| 紫金县| 花莲县| 东兴市| 英超| 锡林郭勒盟| 莆田市| 濮阳市| 湖南省| 天祝| 阳泉市| 邢台市|