~~NOTOC~~
===== tn_queue_send_polling() =====
Функция предназначена для отсылки сообщения ''data_ptr'' через очередь сообщений ''dque'' без блокирования вызывающей задачи.
Если очередь задач, ожидающих сообщение не пуста, сервис переводит первую в очереди задачу в состояние готовой к выполнению и передает сообщение ''data_ptr'' в эту задачу, минуя буфер сообщений.
Если ни одна из задач системы не ожидает сообщение, параметр ''data_ptr'' кладется в конец буфера сообщений очереди и задача продолжает выполнение. Если буфер сообщений заполнен, то функция возвращает код ошибки ''TERR_TIMEOUT''.
**Вызов:**
TN_RETVAL tn_queue_send_polling (TN_DQUE *dque, void *data_ptr);
**Разрешен вызов:** \\
В контексте задачи
**Параметры функции:**
; ''dque'' : указатель на объект очереди сообщений.
; ''data_ptr'' : указатель на сообщение
\\
**Возвращаемые значения:**
; ''TERR_WRONG_PARAM'' : некорректное значение параметра ((данный код возврата возможен только в случае использования сервисов с проверкой параметров))
; ''TERR_NOEXS'' : попытка обращения к объекту, который не является очередью ((данный код возврата возможен только в случае использования сервисов с проверкой параметров))
; ''TERR_WCONTEXT'' : вызов сервиса в пользовательской критической секции или в обработчике прерывания
; ''TERR_TIMEOUT'' : буфер сообщения заполнен, невозможно отослать сообщение
; ''TERR_NO_ERR'' : успешное выполнение
\\
**Пример вызова:**
TN_DQUE queue TN_DATA;
MY_MSG message;
message.a = 1;
message.b = 2;
if (tn_queue_send_polling(&queue, (void*)&message) == TERR_NO_ERR)
{
/* ... */
}
\\
----
[[tnkernel:ref:dqueue:intro#Сервисы управления очередями сообщений|К списку сервисов]]