Цитата(KRS @ Sep 24 2012, 15:29)

С таким вариантом и код должен быть гораздо эффективнее!!!
Мы все рано радуемся. Забылось про то, что такое yield(). А это - примерно
Код
pc = &&Label; return pt_YIELDING; Label:
Тут бубен не помогает. Разве что поиграться с циклом for() .
В качестве кандидата
Код
static inline __attribute__((always_inline)) void *TH_label_yield(tcb_t *pc, const void *label_ret)
{
pc->pc = &&label;
return label_ret;
label:;
}
// заготовки такие:
#define THREAD_BEGIN if(my->tcb.pc != NULL) goto *my->tcb.pc;
#define THREAD_END _Y_i_e_l_d_: return 0; _H_a_l_t_: return 1;
#define yield() goto *TH_label_yield(&my->tcb, &&_Y_i_e_l_d_);
По идее должно работать, но пока проверить некогда.
Вечером отпишусь. Да и полный вариант приведу.