コード例 #1
0
ファイル: intset.c プロジェクト: LPD-EPFL/ASCYLIB
sval_t
set_contains(intset_t *set, skey_t key)
{
  sval_t result;
	
#ifdef DEBUG_PRINT
  printf("++> set_contains(%d)\n", (int)val);
  IO_FLUSH;
#endif
	
#ifdef SEQUENTIAL
  node_t *prev, *next;
	
  prev = set->head;
  next = prev->next;
  while (next->key < keyl) 
    {
      prev = next;
      next = prev->next;
    }
  result = (next->key == key) ? next->val : 0;
#elif defined LOCKFREE			
  result = harris_find(set, key);
#endif	
	
  return result;
}
コード例 #2
0
ファイル: intset.c プロジェクト: dution89630/my-school-work
int set_contains(intset_t *set, val_t val, int transactional)
{
	int result;
	
#ifdef DEBUG
	printf("++> set_contains(%d)\n", (int)val);
	IO_FLUSH;
#endif
	
#ifdef SEQUENTIAL
	node_t *prev, *next;
	
	prev = set->head;
	next = prev->next;
	while (next->val < val) {
		prev = next;
		next = prev->next;
	}
	result = (next->val == val);

#elif defined STM			

	node_t *prev, *next;
	val_t v = 0;

	TX_START(EL);
	prev = set->head;
	next = (node_t *)TX_LOAD(&prev->next);
	while (1) {
		v = TX_LOAD((uintptr_t *) &next->val);
		if (v >= val)
			break;
		prev = next;
		next = (node_t *)TX_LOAD(&prev->next);
	}		  
	TX_END;
	result = (v == val);
			
#elif defined LOCKFREE			
	result = harris_find(set, val);
#endif	
	
	return result;
}
コード例 #3
0
ファイル: intset.c プロジェクト: zablotchi/qsense
sval_t set_contains(intset_t *set, skey_t key) {
    sval_t result;
	
    result = harris_find(set, key);
    return result;
}