/* * swift_context.c * * (c) 2009 Ionut Rosoiu * */ #include #include #include #include "swift.h" #define NUM_THREADS 2 #define MAX_VAL 100 swift_deque_t deque; int vals[MAX_VAL]; swift_frame_t frames[MAX_VAL]; void* pusher(void *arg) { swift_status_t status; int i, j = 0; printf("pusher started.\n"); for (i=0; idependencies_no] = 1; } } printf("popper finished.\n"); return arg; } void* stealer(void *arg) { swift_status_t status; swift_thread_t *thread = arg; swift_frame_t *frame; int i; printf("stealer %d started\n", thread->id); for (i=0; idependencies_no, (void*)frame); vals[frame->dependencies_no] = 1; } } printf("stealer %d finished.\n", thread->id); return arg; } swift_entrypoint_t funcs[4] = { pusher, // must be first popper, stealer, stealer }; int main() { swift_thread_t threads[NUM_THREADS]; int i; //swift_assert(NUM_THREADS == 4); /* initialize the deque */ swift_deque_init(&threads[0], &deque, MAX_VAL); /* initialize the value vector */ for (i=0; i