реклама на сайте
подробности

 
 
> TNKernel->TN_EVENT->старт сразу всех ожидающих флага задач
kosyak©
сообщение Mar 17 2015, 16:44
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



Код
void task(p)
{
    for(;;)
    {
        unsigned int evflags;
        if( tn_event_wait(&evftest, 1,TN_EVENT_WCOND_AND, &evflags, TN_WAIT_INFINITE) == TERR_NO_ERR )
        {
            TRACE("WAIT END %d\n", (uint32_t)p);
        }
    }
}
...
///где то в другой задаче
    tn_event_create(&evftest, TN_EVENT_ATTR_MULTI, 0);
    // запускаем 4 задачи
    create_task(task(0));
    create_task(task(1));
    create_task(task(2));
    create_task(task(3));
    
    tn_event_set(&evftest, 1);
    for(;;);
....

В рабочее состояние перейдет первая созданная задача. Как сделать чтобы все задачи перешли в рабочее состояние?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
kosyak©
сообщение Mar 19 2015, 10:13
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



а можно пример кода как Вы проверяли?
Go to the top of the page
 
+Quote Post
Grape
сообщение Mar 19 2015, 10:53
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 69
Регистрация: 22-10-04
Пользователь №: 956



Цитата(kosyak© @ Mar 19 2015, 14:13) *
а можно пример кода как Вы проверяли?


задержки в тиках сист.таймера.

Код
void task(void *p)
{
int err;
    for(;;) {
        unsigned int evflags;
        err = tn_event_wait(&evftest, 1, TN_EVENT_WCOND_AND, &evflags, TN_WAIT_INFINITE);

        TRACE("WAIT END %d, %d", (uint32_t)p, err);

        my_sleep(5);
    }
}


void    tn_test(void)
{

   //где то в другой задаче
   tn_event_create(&evftest, TN_EVENT_ATTR_MULTI, 0);

   // запускаем 4 задачи
   create_task(task, 1);
   create_task(task, 2);
   create_task(task, 3);
   create_task(task, 4);

   my_sleep(100);

   tn_event_set(&evftest, (1<< 0) | (1<< 1) | (1<< 2) | (1<< 3) );
   for(;;);
}
Go to the top of the page
 
+Quote Post
kosyak©
сообщение Mar 19 2015, 11:29
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



Попробуйте так.
Код
void task(void *p)
{
int err;
    for(;;) {
        unsigned int evflags;
        err = tn_event_wait(&evftest, 1, TN_EVENT_WCOND_AND, &evflags, TN_WAIT_INFINITE);

        TRACE("WAIT END %d, %d", (uint32_t)p, err);

                tn_task_sleep(TN_WAIT_INFINITE);
    }
}

void    tn_test(void)
{

   //где то в другой задаче
   tn_event_create(&evftest, TN_EVENT_ATTR_MULTI, 0);

   // запускаем 4 задачи
   create_task(task, 1);
   create_task(task, 2);
   create_task(task, 3);
   create_task(task, 4);

   my_sleep(100);

   tn_event_set(&evftest, (1<< 0) | (1<< 1) | (1<< 2) | (1<< 3) );
   tn_task_sleep(TN_WAIT_INFINITE);
}

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kosyak©   TNKernel->TN_EVENT->старт сразу всех ожидающих флага задач   Mar 17 2015, 16:44
- - megajohn   если нужно быстрое решение, то навскидку так void ...   Mar 17 2015, 17:24
- - kosyak©   Не не не. У меня вопрос скорее к RTOS - насколько ...   Mar 17 2015, 17:30
|- - AHTOXA   Я не пользовал TNKernel, но из общих соображений: ...   Mar 17 2015, 17:38
- - kosyak©   Это у меня псевдо код. В реале там есть задержка с...   Mar 17 2015, 17:44
|- - AHTOXA   В scmRTOS проснутся все задачи, ожидающие данного ...   Mar 17 2015, 19:22
- - Grape   в 2.7 просыпаются все. только что проверил. /gr   Mar 19 2015, 10:04
|- - Grape   Цитата(kosyak© @ Mar 19 2015, 15:29) Попр...   Mar 19 2015, 12:06
- - kosyak©   Хм... Я использую v2.7 порт для CortexM4. Во влож...   Mar 19 2015, 12:34
|- - Grape   Цитата(kosyak© @ Mar 19 2015, 16:34) Хм.....   Mar 19 2015, 12:36
- - kosyak©   А у кого выше приоритет? у "MAIN Run"? П...   Mar 19 2015, 17:47
|- - Grape   Цитата(kosyak© @ Mar 19 2015, 21:47) А у ...   Mar 20 2015, 10:47
- - kosyak©   Все разобрался. Эта проблема присуща версии 2.6 (п...   Mar 21 2015, 21:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016