Ejemplos ir contexto (c) el uso para lograr la Política de distribuidor manos

Uso del paquete contexto estrategia de distribuidor implementos manos,

La estrategia de distribuidor: Sobrecalentamiento en la descripción del puesto de trabajo de introducción de TNT, una tarea distribuida a varios controladores de proceso, que debe usar, que procesa los resultados, cancelar la tarea de manejar otras personas.

El ejemplo clásico: mientras que Baidu, Google, Microsoft búsqueda Bing, obtenido ningún resultado, otra solicitud de búsqueda se cancela

El siguiente código en el Himalaya, la música QQ, Netease nube de búsqueda de canciones de música

paquete principal 

de importación ( 
	"contexto" 
	"FMT" 
	"io / ioutil" 
	"net / http" 
) 

var wangYiYunYinYue = "https://music.163.com/#/search/m/?s=%s&type=1" 
var qqMusic = "https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=%s" 
var xiMaLaYa = "https://www.ximalaya.com/ buscar /% s" 

func main () { 
	CTX, cancelación: = context.WithCancel (context.Background ()) 
	ret: = make (Chan cadena) 
	ir findMusic (CTX, fmt.Sprintf (wangYiYunYinYue, "铁血丹心"), ret) 
	ir findMusic (CTX, fmt.Sprintf (qqMusic, "铁血丹心"), RET) 
	ir findMusic (CTX, fmt.Sprintf (xiMaLaYa, "铁血丹心"),derecha) 
	seleccionar { 
	caso r: = <interés de arrendamiento:  
		fmt.Println ( "r", r)
		cancelar ()
	} 
} 
Func findMusic (CTX context.Context, cadena de URL, ret Chan <- cadena) { 
	a { 
		seleccionar { 
		caso <-ctx.Done (): 
			fmt.Println ( "DoWork hecho") 
			de retorno 
		por defecto: 
			resp, err: = http.Get (url) 
			Si ERR = nil {! 
				fmt.Println (err) 
				de retorno 
			} 
			b, _: = ioutil.ReadAll (resp.Body) 
			ret <- cadena (b) 
			de retorno 
		} 
	} 
}

 

Supongo que te gusta

Origin www.cnblogs.com/Bin-DuS/p/12527155.html
Recomendado
Clasificación