From 4422399e298e40629db70642e781ddd76f460548 Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Tue, 07 Mar 2017 12:16:18 +0000
Subject: [PATCH] Fix multi-thread rand()
---
src/data.c | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/data.c b/src/data.c
index 19dca8a..311f882 100644
--- a/src/data.c
+++ b/src/data.c
@@ -39,18 +39,23 @@
}
*/
+int mt_seed = 0;
+
char **get_random_paths(char **paths, int n, int m)
{
char **random_paths = calloc(n, sizeof(char*));
int i;
pthread_mutex_lock(&mutex);
+ if (mt_seed == 0) mt_seed = time(0);
+ srand(mt_seed);
//printf("n = %d \n", n);
- for(i = 0; i < n; ++i){
- int index = (rand()*rand())%m;
+ for(i = 0; i < n; ++i){
+ int index = rand()%m;
random_paths[i] = paths[index];
//if(i == 0) printf("%s\n", paths[index]);
- //printf("%s\n", paths[index]);
+ //printf("grp: %s\n", paths[index]);
}
+ mt_seed = rand();
pthread_mutex_unlock(&mutex);
return random_paths;
}
--
Gitblit v1.10.0