I see they are excellent for concurrent programming but is it possible to utilise all cores of processor effectively with coroutines?
Coroutines help solve IO-bound issues - a long networking API call doesn't block your program. You can continue doing other things. The side-effect of which may use all your cores efficiently but that's not the primary goal.
You still need threads.