Example Active Object (Cont.) /* handle command. */ pthread_mutex_unlock(&q->mutex); switch (cmd->cmd) { case CMD_TYPE_TERM: done = 1; break; case CMD_TYPE_COPY: copy_file_impl(&cmd->u.copy_data); break; case CMD_TYPE_DEL: del_file_impl(&cmd->u.del_data); break; case CMD_TYPE_RENAME: rename_file_impl(&cmd->u.rename_data); break; } free_cmd(cmd); /* 'deep' free */ pthread_mutex_lock(&q->mutex); } pthread_mutex_unlock(&q->mutex); return NULL; }