int main(void) { int i; i = NBR_PHILO; while (i--) { if (create_fork()) return (1); if (create_philo()) return (1); } join_lists(); fill_o_phils(); // test id mutex // thread_init(); return (0); }
static void random_storm(Storm * st) { int i, j, tmp; XPoint p; for (i = 0; i < st->multi_strike; i++) { st->bolts[i].end1.x = NRAND(st->scr_width); st->bolts[i].end1.y = 0; st->bolts[i].end2.x = NRAND(st->scr_width); st->bolts[i].end2.y = st->scr_height; st->bolts[i].wiggle_number = WIGGLE_BASE + NRAND(MAX_WIGGLES); if ((st->bolts[i].flash = flashing_strike())) flash_duration(&(st->bolts[i].flash_begin), &(st->bolts[i].flash_stop), st->bolts[i].wiggle_number); else st->bolts[i].flash_begin = st->bolts[i].flash_stop = 0; st->bolts[i].wiggle_amount = WIGGLE_AMOUNT; if (i == 0) st->bolts[i].delay_time = NRAND(DELAY_TIME_AMOUNT); else st->bolts[i].delay_time = NRAND(DELAY_TIME_AMOUNT) + (MULTI_DELAY_TIME_BASE * i); st->bolts[i].strike_level = FIRST_LEVEL_STRIKE; tmp = 0; generate(st->bolts[i].end1, st->bolts[i].end2, BOLT_ITERATION, st->bolts[i].middle, &tmp); st->bolts[i].fork_number = 0; st->bolts[i].visible = 0; for (j = 0; j < BOLT_VERTICIES; j++) { if (st->bolts[i].fork_number >= 2) break; if (NRAND(100) < RANDOM_FORK_PROBILITY) { p.x = NRAND(st->scr_width); p.y = st->scr_height; st->bolts[i].forks_start[st->bolts[i].fork_number] = j; create_fork(&(st->bolts[i].branch[st->bolts[i].fork_number]), st->bolts[i].middle[j], p, j); st->bolts[i].fork_number++; } } } }