Exemple #1
0
int main(int argc, char **argv)
{
    gr1 = greenlet_new(func1, NULL, 0);
    gr2 = greenlet_new(func2, NULL, 0);

    if ((gr1 == NULL) || (gr2 == NULL))
    {
        fprintf(stderr, "error: could not allocate greenlets\n");
        exit(1);
    }

    printf("entering greenlet 1\n");
    if (greenlet_switch_to(gr1, NULL) == gr2)
        printf("back in main from: greenlet 2\n");
    printf("greenlet 1 dead: %d\n", greenlet_isdead(gr1));
    printf("greenlet 2 dead: %d\n", greenlet_isdead(gr2));
    printf("re-entering greenlet 1\n");
    if (greenlet_switch_to(gr1, NULL) == gr1)
        printf("back in main from: greenlet 1\n");
    printf("greenlet 1 dead: %d\n", greenlet_isdead(gr1));
    printf("greenlet 2 dead: %d\n", greenlet_isdead(gr2));

    greenlet_destroy(gr1);
    greenlet_destroy(gr2);

    return 0;
}
		bool isdead(handle fiber)
		{
#if __S3E__
			return !IwFibreIsRunning((IwFibre*) fiber);
#elif GREENLETS
			return greenlet_isdead((greenlet*) fiber) != 0;
#else
#endif
		}