pthread_mutex_init(&ms_global.init_lock.lock, NULL);
pthread_cond_init(&ms_global.init_lock.cond, NULL);
+ ms_global.warmup_lock.count = 0;
+ pthread_mutex_init(&ms_global.warmup_lock.lock, NULL);
+ pthread_cond_init(&ms_global.warmup_lock.cond, NULL);
+
ms_global.run_lock.count= 0;
pthread_mutex_init(&ms_global.run_lock.lock, NULL);
pthread_cond_init(&ms_global.run_lock.cond, NULL);
pthread_mutex_destroy(&ms_global.init_lock.lock);
pthread_cond_destroy(&ms_global.init_lock.cond);
+ pthread_mutex_destroy(&ms_global.warmup_lock.lock);
+ pthread_cond_destroy(&ms_global.warmup_lock.cond);
+
pthread_mutex_destroy(&ms_global.run_lock.lock);
pthread_cond_destroy(&ms_global.run_lock.cond);
break;
case OPT_THREAD_NUMBER: /* --threads or -T */
- ms_setting.nthreads= (int)strtol(optarg, (char **) NULL, 10);
+ ms_setting.nthreads= (uint32_t)strtoul(optarg, (char **) NULL, 10);
if (ms_setting.nthreads <= 0)
{
fprintf(stderr, "Threads number must be greater than 0.:-)\n");
break;
case OPT_SOCK_PER_CONN: /* --conn_sock or -n */
- ms_setting.sock_per_conn= (int)strtol(optarg, (char **) NULL, 10);
+ ms_setting.sock_per_conn= (uint32_t)strtoul(optarg, (char **) NULL, 10);
if (ms_setting.sock_per_conn <= 0)
{
fprintf(stderr, "Number of socks of each concurrency "
break;
case OPT_REP_WRITE_SRV: /* --rep_write or -p */
- ms_setting.rep_write_srv= (int)strtol(optarg, (char **) NULL, 10);
+ ms_setting.rep_write_srv= (uint32_t)strtoul(optarg, (char **) NULL, 10);
if (ms_setting.rep_write_srv <= 0)
{
fprintf(stderr,
int second= 0;
struct timeval start_time, end_time;
+ /* Wait all the threads complete initialization. */
+ pthread_mutex_lock(&ms_global.init_lock.lock);
+ while (ms_global.init_lock.count < ms_setting.nthreads)
+ {
+ pthread_cond_wait(&ms_global.init_lock.cond,
+ &ms_global.init_lock.lock);
+ }
+ pthread_mutex_unlock(&ms_global.init_lock.lock);
+
/* only when there is no set operation it need warm up */
if (ms_setting.cmd_distr[CMD_SET].cmd_prop < PROP_ERROR)
{
/* Wait all the connects complete warm up. */
- pthread_mutex_lock(&ms_global.init_lock.lock);
- while (ms_global.init_lock.count < (int)ms_setting.nconns)
+ pthread_mutex_lock(&ms_global.warmup_lock.lock);
+ while (ms_global.warmup_lock.count < ms_setting.nconns)
{
- pthread_cond_wait(&ms_global.init_lock.cond,
- &ms_global.init_lock.lock);
+ pthread_cond_wait(&ms_global.warmup_lock.cond, &ms_global.warmup_lock.lock);
}
- pthread_mutex_unlock(&ms_global.init_lock.lock);
+ pthread_mutex_unlock(&ms_global.warmup_lock.lock);
}
-
ms_global.finish_warmup= true;
/* running in "run time" mode, user specify run time */
* We loop until we know that all connects have cleaned up.
*/
pthread_mutex_lock(&ms_global.run_lock.lock);
- while (ms_global.run_lock.count < (int)ms_setting.nconns)
+ while (ms_global.run_lock.count < ms_setting.nconns)
{
pthread_cond_wait(&ms_global.run_lock.cond, &ms_global.run_lock.lock);
}