int ct_distribute_msg( Ct_msgtype type );
This function is similar to ct_enqueue(), except that you specify a message type instead of a particular thread. It is also similar to ct_distribute_msg(), except that it doesn't deliver any messages. As a result, the threads enqueued don't need to examine or dequeue a message.
The term "message type" is a bit misleading in this context because no message is involved. The message type merely identifies a class of threads.
If a thread is itself subscribed to the specified message type, it will be the last thread enqueued.
It is also possible to call ct_distribute_enq() before the scheduler runs. In that case, before the first thread runs, the scheduler will enqueue every thread subscribed to the specified message type -- including threads that were subscribed after the call to ct_enqueue().
After the scheduler has finished, calling ct_send_enq() is possible but not useful, since there is neither a scheduler to enqueue the threads nor any threads to enqueue. Such a call will also leak memory, unless the application later calls ct_clear() to recover it.