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

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

大佬們,幫看看這兩種生產(chǎn)消費模式有什么不同

大佬們,幫看看這兩種生產(chǎn)消費模式有什么不同

Go
會飛的wade 2019-06-17 18:45:29
第一種:package mainimport (? ? "fmt"? ? "time")/* 有關(guān)Task任務(wù)相關(guān)定義及操作 *///定義任務(wù)Task類型,每一個任務(wù)Task都可以抽象成一個函數(shù)type Task struct {? ? f func() error //一個無參的函數(shù)類型}//通過NewTask來創(chuàng)建一個Taskfunc NewTask(f func() error) *Task {? ? t := Task{? ? ? ? f: f,? ? }? ? return &t}//執(zhí)行Task任務(wù)的方法func (t *Task) Execute() {? ? t.f() //調(diào)用任務(wù)所綁定的函數(shù)}/* 有關(guān)協(xié)程池的定義及操作 *///定義池類型type Pool struct {? ? //對外接收Task的入口? ? EntryChannel chan *Task? ? //協(xié)程池最大worker數(shù)量,限定Goroutine的個數(shù)? ? worker_num int? ? //協(xié)程池內(nèi)部的任務(wù)就緒隊列? ? JobsChannel chan *Task}//創(chuàng)建一個協(xié)程池func NewPool(cap int) *Pool {? ? p := Pool{? ? ? ? EntryChannel: make(chan *Task),? ? ? ? worker_num:? ?cap,? ? ? ? JobsChannel:? make(chan *Task),? ? }? ? return &p}//協(xié)程池創(chuàng)建一個worker并且開始工作func (p *Pool) worker(work_ID int) {? ? //worker不斷的從JobsChannel內(nèi)部任務(wù)隊列中拿任務(wù)? ? for task := range p.JobsChannel {? ? ? ? //如果拿到任務(wù),則執(zhí)行task任務(wù)? ? ? ? task.Execute()? ? ? ? fmt.Println("worker ID ", work_ID, " 執(zhí)行完畢任務(wù)")? ? }}//讓協(xié)程池Pool開始工作func (p *Pool) Run() {? ? //1,首先根據(jù)協(xié)程池的worker數(shù)量限定,開啟固定數(shù)量的Worker,? ? //? 每一個Worker用一個Goroutine承載? ? for i := 0; i < p.worker_num; i++ {? ? ? ? go p.worker(i)? ? }? ? //2, 從EntryChannel協(xié)程池入口取外界傳遞過來的任務(wù)? ? //? ?并且將任務(wù)送進JobsChannel中? ? for task := range p.EntryChannel {? ? ? ? p.JobsChannel <- task? ? }? ? //3, 執(zhí)行完畢需要關(guān)閉JobsChannel? ? close(p.JobsChannel)? ? //4, 執(zhí)行完畢需要關(guān)閉EntryChannel? ? close(p.EntryChannel)}//主函數(shù)func main() {? ? //創(chuàng)建一個Task? ? t := NewTask(func() error {? ? ? ? fmt.Println(time.Now())? ? ? ? return nil? ? })? ? //創(chuàng)建一個協(xié)程池,最大開啟3個協(xié)程worker? ? p := NewPool(3)? ? //開一個協(xié)程 不斷的向 Pool 輸送打印一條時間的task任務(wù)? ? go func() {? ? ? ? for {? ? ? ? ? ? p.EntryChannel <- t? ? ? ? }? ? }()? ? //啟動協(xié)程池p? ? p.Run()}第二種:https://blog.51cto.com/11140372/2342953
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關(guān)注
  • 749 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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