semaphore in coroutine?

Is it possible to simulate a semaphore for use in coroutines by creating a queue using xQueueCreate(1, 0);  Would I have to pass a pointer to allocated storage in the pvItemToQueue parameter in the crQUEUE_SEND call or could I just set this parameter to zero? Also, on a separate issue the docs say that crQUEUE_SEND can only be called from within the co-routine function itself and not from a function called by the co-routine.  I was wondering if it was safe to violate this rule if the xTicksToWait parameter was set to zero and hence cause the crQUEUE_SEND call to be non-blocking?