Если ты что-то поместил в канал, ты можешь это считать. Если будешь читать канал, в котором пусто - заблокируешься до тех пор, пока кто-нибудь не запишет туда. Если ты пишешь в канал, из которого никто не читает, то тоже заблокируешься по исчерпанию буфера канала.
В целом, в Perl каналы не нужны, т.к. нет нормальной многопоточности. Семантику "блокировки исполнителя" поддерживает Coro. Либо можешь взять промисы, создание которых примерно соответствует "блокировке" и при определённом навыке это читается намного легче чем колбэки.