ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
383268 Топик полностью
abivan (25.01.2013 16:24, просмотров: 48) ответил tnk_user на TNKernel: пользовался кто-нибудь флажком с атрибутом TN_EVENT_ATTR_MULTI ?Похоже, функция tn_event_set() не гарантирует пробуждение *всех* задач,ожидающих такой флажок. Функция, которая просматривает очередь ожидающихзадач (scan_event_waitqueue),
я делал аналогичную ф-ю другим методом, может пригодится. у каждой задачи свой флаг. tn_event_set(EVENT_CALC_P, 0xFFFF); void TN_TASK TaskDataReady(void *par){ TN_UWORD EventCalcPattern, EventCalcFlag; BYTE bReady=1; EventCalcPattern=GetValidPattern_EventCalc(); loop{ tn_event_wait(EVENT_CALC_P, EventCalcPattern, TN_EVENT_WCOND_AND, &EventCalcFlag, TN_WAIT_INFINITE); .... } } /*******************************************************/ /* Имя GetValidPattern_EventCalc */ /* */ /* Тип */ /* */ /* Назначение Выдать по запросу маску события */ /*=====================================================*/ /* */ /**/ unsigned /**/ /* Код возврата : */ /* флаг - Успешное выполнение */ /* 0 - свободные флаги отсутствуют */ /* */ /**/ GetValidPattern_EventCalc(void) /**/ /* */ /*******************************************************/ { static unsigned uValidFlag=0x1; uValidFlag<<=1; return(uValidFlag); }