That's what select is for. For example:
for {
select {
case v := <-c1:
// process v
case v, ok := <-c2:
// Second form, '!ok' -> c2 was closed
default:
// receiving was not done
}
}