kernel: `k_msgq_put` should trigger reschedule

Make `k_msgq_put` as scheduler point to resolve
high priority thread can not preempt low priority
thread.

Signed-off-by: TaiJu Wu <tjwu1217@gmail.com>
diff --git a/doc/kernel/services/data_passing/message_queues.rst b/doc/kernel/services/data_passing/message_queues.rst
index afa3331..18c8cf3 100644
--- a/doc/kernel/services/data_passing/message_queues.rst
+++ b/doc/kernel/services/data_passing/message_queues.rst
@@ -108,6 +108,7 @@
 to pass data items from a producing thread to one or more consuming threads.
 If the message queue fills up because the consumers can't keep up, the
 producing thread throws away all existing data so the newer data can be saved.
+Note that this api will trigger reschedule.
 
 .. code-block:: c
 
diff --git a/kernel/msg_q.c b/kernel/msg_q.c
index 190b8c4..9035fcc 100644
--- a/kernel/msg_q.c
+++ b/kernel/msg_q.c
@@ -178,7 +178,7 @@
 
 	SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_msgq, put, msgq, timeout, result);
 
-	k_spin_unlock(&msgq->lock, key);
+	z_reschedule(&msgq->lock, key);
 
 	return result;
 }