Added null check to Channel's destrutor, as its API would actually the semaphore to be null.
Filled out TaskProcessor type. This is still untested.