1 #include "xbt/context.h"
6 xbt_context_t cA = NULL;
7 xbt_context_t cB = NULL;
8 xbt_context_t cC = NULL;
9 xbt_fifo_t fifo = NULL;
11 void print_args(int argc, char** argv);
12 void print_args(int argc, char** argv)
18 printf("%s ",argv[i]);
22 int fA(int argc, char** argv);
23 int fA(int argc, char** argv)
26 print_args(argc,argv);
28 printf("\tA: Yield\n");
30 printf("\tA: Yield\n");
32 printf("\tA : bye\n");
37 int fB(int argc, char** argv);
38 int fB(int argc, char** argv)
41 print_args(argc,argv);
43 printf("\tB: Yield\n");
45 xbt_fifo_push(fifo,cA);
47 printf("\tB: Yield\n");
49 printf("\tB : bye\n");
54 int fC(int argc, char** argv);
55 int fC(int argc, char** argv)
58 print_args(argc,argv);
61 printf("\tC: Yield\n");
68 int main(int argc, char** argv)
70 xbt_context_t context = NULL;
74 cA = xbt_context_new(fA, NULL, NULL, NULL, NULL, 0, NULL);
75 cB = xbt_context_new(fB, NULL, NULL, NULL, NULL, 0, NULL);
76 cC = xbt_context_new(fC, NULL, NULL, NULL, NULL, 0, NULL);
78 fifo = xbt_fifo_new();
80 xbt_context_start(cA);
81 printf("\tO->A\n");xbt_fifo_push(fifo,cA);
82 xbt_context_start(cB);
83 printf("\tO->B\n");xbt_fifo_push(fifo,cB);
84 xbt_context_start(cC);xbt_fifo_push(fifo,cC);
85 printf("\tO->C\n");xbt_fifo_push(fifo,cC);
87 while((context=xbt_fifo_shift(fifo))) {
88 printf("\tO:Yield\n");
89 xbt_context_schedule(context);