forked from LPD-EPFL/ASCYLIB
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_custom.c
85 lines (67 loc) · 1.92 KB
/
test_custom.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*
* File: test_simple.c
* Author: Vasileios Trigonakis <[email protected]>
* Description:
* test_simple.c is part of ASCYLIB
*
* Copyright (c) 2014 Vasileios Trigonakis <[email protected]>,
* Tudor David <[email protected]>
* Distributed Programming Lab (LPD), EPFL
*
* ASCYLIB is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, version 2
* of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#include <stdio.h>
#include <assert.h>
#include <pthread.h>
#include "intset.h"
/* ################################################################### *
* Definition of macros: per data structure
* ################################################################### */
#define DS_CONTAINS(s,k,t) sl_contains(s, k)
#define DS_ADD(s,k,t) sl_add(s, k, k)
#define DS_REMOVE(s,k,t) sl_remove(s, k)
#define DS_SIZE(s) sl_set_size(s)
#define DS_NEW() sl_set_new()
#define DS_TYPE sl_intset_t
#define DS_NODE sl_node_t
#define N_THREADS 1000
__thread unsigned long * seeds;
DS_TYPE * set;
void *
test(void * arg){
ssalloc_init();
seeds = seed_rand();
DS_ADD(set, (skey_t) arg, NULL);
return 0;
}
int
main(int argc, char **argv)
{
levelmax = 10;
size_pad_32 = 128;
ssalloc_init();
seeds = seed_rand();
set = DS_NEW();
assert(set != NULL);
pthread_t ths[N_THREADS];
int i;
for (i = 0; i < N_THREADS; ++i)
{
pthread_create(&ths[i], 0, test, (void *) i);
}
for (i = 0; i < N_THREADS; ++i)
{
pthread_join(ths[i], 0);
}
printf("%u\n", DS_SIZE(set));
return 0;
}