Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
55a3da87
Commit
55a3da87
authored
Oct 03, 2019
by
antirez
Browse files
Modules: RM_Replicate() test with threads.
parent
45cd8e03
Changes
1
Show whitespace changes
Inline
Side-by-side
tests/modules/propagate.c
View file @
55a3da87
...
...
@@ -39,6 +39,7 @@
#define REDISMODULE_EXPERIMENTAL_API
#include "redismodule.h"
#include <pthread.h>
/* Timer callback. */
void
timerHandler
(
RedisModuleCtx
*
ctx
,
void
*
data
)
{
...
...
@@ -47,12 +48,26 @@ void timerHandler(RedisModuleCtx *ctx, void *data) {
static
int
times
=
0
;
printf
(
"Fired!
\n
"
);
RedisModule_Replicate
(
ctx
,
"INCR"
,
"c"
,
"timer"
);
times
++
;
if
(
times
<
10
)
RedisModule_CreateTimer
(
ctx
,
100
,
timerHandler
,
NULL
);
else
times
=
0
;
}
/* The thread entry point. */
void
*
threadMain
(
void
*
arg
)
{
REDISMODULE_NOT_USED
(
arg
);
RedisModuleCtx
*
ctx
=
RedisModule_GetThreadSafeContext
(
NULL
);
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
RedisModule_ThreadSafeContextLock
(
ctx
);
RedisModule_Replicate
(
ctx
,
"INCR"
,
"c"
,
"thread"
);
RedisModule_ThreadSafeContextUnlock
(
ctx
);
}
RedisModule_FreeThreadSafeContext
(
ctx
);
return
NULL
;
}
int
propagateTestCommand
(
RedisModuleCtx
*
ctx
,
RedisModuleString
**
argv
,
int
argc
)
...
...
@@ -60,7 +75,13 @@ int propagateTestCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc
REDISMODULE_NOT_USED
(
argv
);
REDISMODULE_NOT_USED
(
argc
);
RedisModuleTimerID
tid
=
RedisModule_CreateTimer
(
ctx
,
100
,
timerHandler
,
NULL
);
RedisModuleTimerID
timer_id
=
RedisModule_CreateTimer
(
ctx
,
100
,
timerHandler
,
NULL
);
REDISMODULE_NOT_USED
(
timer_id
);
pthread_t
tid
;
if
(
pthread_create
(
&
tid
,
NULL
,
threadMain
,
NULL
)
!=
0
)
return
RedisModule_ReplyWithError
(
ctx
,
"-ERR Can't start thread"
);
REDISMODULE_NOT_USED
(
tid
);
RedisModule_ReplyWithSimpleString
(
ctx
,
"OK"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment