天天看點

Go并發模式之 for-select

for - select

for{  //要不就無限循環,要不就使用range 語句循環

   select{
      //使用channel進行作業
   }
}

以下情況使用 for-select

向channel 發送疊代變量  ---for select

for _, s := range []string{"a", "b", "c"}{
   select {
      case <-done :
         return
      case stringStream <- s :
   }
}

循環等待停止

for{
   select{
      case <- done :
         return
      default :
   }

   //進行非搶占式任務
}


for{
   select{
      case <- done :
         return
      default:
         //進行非搶占式任務
   }
}