mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 12:01:42 +01:00
add the gcc atomic builtin fetch_and_add
git-svn-id: file:///svn/tokudb@5501 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
f4d9c56627
commit
58435beac0
1 changed files with 12 additions and 0 deletions
|
@ -62,6 +62,12 @@ fetch_and_add_i (volatile int *p, int incr)
|
|||
return result;
|
||||
}
|
||||
|
||||
static inline int
|
||||
gcc_fetch_and_add_i (volatile int *p, int incr)
|
||||
{
|
||||
return __sync_fetch_and_add(p, incr);
|
||||
}
|
||||
|
||||
// Something wrong with the compiler for longs
|
||||
/* Returns nonzero if the comparison succeeded. */
|
||||
static inline long
|
||||
|
@ -139,6 +145,12 @@ int main (int argc __attribute__((__unused__)), char *argv[] __attribute__((__un
|
|||
TIME("fetchadd", i,
|
||||
(void)0,
|
||||
fetch_and_add_i(&fa, i));
|
||||
// printf("fa=%d\n", fa);
|
||||
fa=0;
|
||||
TIME("gcc_fetchadd", i,
|
||||
(void)0,
|
||||
gcc_fetch_and_add_i(&fa, i));
|
||||
// printf("fa=%d\n", fa);
|
||||
TIME("compare_and_swap", i,
|
||||
ivals[i]=0,
|
||||
({ int r=compare_and_swap_full_i(&ivals[i], 0, 1); assert(r==1); }));
|
||||
|
|
Loading…
Add table
Reference in a new issue