亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang使用context關閉go routine的方法

發布時間:2021-06-21 15:01:27 來源:億速云 閱讀:226 作者:chen 欄目:編程語言

本篇內容主要講解“golang使用context關閉go routine的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“golang使用context關閉go routine的方法”吧!

go中的context

go語言提供了context包,支持在多個go routine之間傳遞信號,可以使用它優雅的取消任務,從而優雅的結束go routine,節約系統資源。

實踐

今天遇到了這個任務,有多科考試,需要比對一下各個學科的考試學生名單是否一致,考慮到假如有好幾科,然后每科有幾千個學生,如果只用循環那么需要循環幾萬次,于是就開了協程結合context進行處理。話不多說,直接上代碼:

    var baseStus []examstudent.StudentViewModel
	linq.From(stuMap[int(sexams[0].SeID)]).OrderBy(func(i interface{}) interface{} {
		return i.(examstudent.StudentViewModel).ExamCode
	}).ToSlice(&baseStus)
    //定義一個支持取消的context
	ctx, cancel := context.WithCancel(context.Background())
    //標志,用來區分是一致還是不一致
	sch := make(chan int, len(sexams)-1)
	for i, _ := range sexams {
		if i == 0 {
			continue
		}
        //開啟協程
		go func(c context.Context, index int) {
			var compareStus []examstudent.StudentViewModel
			linq.From(stuMap[int(sexams[i].SeID)]).OrderBy(func(x interface{}) interface{} {
				return x.(examstudent.StudentViewModel).ExamCode
			}).ToSlice(&compareStus)
			for x, vv := range baseStus {
				select {
				case <-c.Done():
					return
				default:
					if vv.ExamCode != compareStus[x].ExamCode {
						cancel() //如果不一致就取消任務
						return
					}
				}
			}
			sch <- index
		}(ctx, i)

	}
	defer cancel()
	defer close(sch)
	for {
		select {//select語句
		case <-ctx.Done():
			return false, nil  //執行了這個地方就表示不一致了
		case <-sch:
			if len(sch) == 0 {
				return true, nil
			}
		}
	}

到此,相信大家對“golang使用context關閉go routine的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥德县| 博野县| 东乌珠穆沁旗| 榆社县| 南乐县| 嘉兴市| 文登市| 伊通| 建瓯市| 运城市| 新龙县| 宜宾县| 平舆县| 涿州市| 洮南市| 裕民县| 集贤县| 澄江县| 吉安县| 延津县| 常宁市| 鄄城县| 抚远县| 阿荣旗| 新源县| 当雄县| 瓮安县| 信丰县| 泊头市| 平昌县| 资溪县| 克拉玛依市| 弥渡县| 赤壁市| 庄浪县| 庐江县| 化隆| 祥云县| 怀来县| 潢川县| 喀喇|