inline static void Execute(void* Arg) { ThreadState lobject_lock; long i, rnum; volatile long j; long id = (long) Arg; setThreadId(id); _thread_pin(id); simSRandom(id + 1L); threadStateInit(&lobject_lock, &object_lock, (int)id); if (id == N_THREADS - 1) d1 = getTimeMillis(); // Synchronization point int rc = pthread_barrier_wait(&barr); if (rc != 0 && rc != PTHREAD_BARRIER_SERIAL_THREAD) { printf("Could not wait on barrier\n"); exit(-1); } start_cpu_counters(id); for (i = 0; i < RUNS; i++) { // perform a fetchAndMultiply operation applyOp(&object_lock, &lobject_lock, fetchAndMultiply, (ArgVal) id, id); rnum = simRandomRange(1, MAX_WORK); for (j = 0; j < rnum; j++) ; } stop_cpu_counters(id); }
inline void Execute(void* Arg) { long i, rnum; volatile int j; long id = (long) Arg; HQueueThreadState lqueue_struct; setThreadId(id); _thread_pin(id); simSRandom(id + 1); hqueueThreadStateInit(&queue_object, &lqueue_struct, (int)id); if (id == N_THREADS - 1) d1 = getTimeMillis(); // Synchronization point int rc = pthread_barrier_wait(&barr); if (rc != 0 && rc != PTHREAD_BARRIER_SERIAL_THREAD) { printf("Could not wait on barrier\n"); exit(-1); } start_cpu_counters(id); for (i = 0; i < RUNS; i++) { // perform an enqueue operation applyEnqueue(&queue_object, &lqueue_struct, (ArgVal) id, id); rnum = simRandomRange(1, MAX_WORK); for (j = 0; j < rnum; j++) ; // perform a dequeue operation applyDequeue(&queue_object, &lqueue_struct, id); rnum = simRandomRange(1, MAX_WORK); for (j = 0; j < rnum; j++) ; } stop_cpu_counters(id); }
inline static void Execute(void* Arg) { long i; long rnum; long id = (long) Arg; volatile int j; setThreadId(id); _thread_pin(id); simSRandom(id + 1); init_pool(&pool_node, sizeof(ListNode)); if (id == N_THREADS - 1) d1 = getTimeMillis(); // Synchronization point int rc = pthread_barrier_wait(&barr); if (rc != 0 && rc != PTHREAD_BARRIER_SERIAL_THREAD) { printf("Could not wait on barrier\n"); exit(-1); } start_cpu_counters(id); for (i = 0; i < RUNS; i++) { push((Object)1, id); rnum = simRandomRange(1, MAX_WORK); for (j = 0; j < rnum; j++) ; pop(id); rnum = simRandomRange(1, MAX_WORK); for (j = 0; j < rnum; j++) ; } stop_cpu_counters(id); }
void initialize_ds(int initListSize, int elementsRange, ThreadGlobals *tg){ #if defined(DAOA) && !defined(HASH_OP) void addRoot(void **root, int len); addRoot((void**)&entryHead, 1); #endif entryHead=NULL; midkey=elementsRange/2; simSRandom(-1); for (int i = 0; i < initListSize; i++) { int key = simRandom() % elementsRange; #ifndef HASH_OP ListInsertFAST(&entryHead, tg, key, 0); #else HashInsertFAST(&hash, tg, key, 0); #endif } }