Merge pull request #264 from Barenboim/master

random_shuffle->shuffle
This commit is contained in:
xiehan
2021-02-25 20:00:03 +08:00
committed by GitHub
2 changed files with 9 additions and 4 deletions
+3 -3
View File
@@ -187,7 +187,7 @@ const EndpointAddress *EndpointGroup::get_one()
const EndpointAddress *addr = NULL;
pthread_mutex_lock(&this->mutex);
std::random_shuffle(this->mains.begin(), this->mains.end());
std::shuffle(this->mains.begin(), this->mains.end(), this->gen);
for (size_t i = 0; i < this->mains.size(); i++)
{
if (this->mains[i]->fail_count < this->mains[i]->params->max_fails)
@@ -199,7 +199,7 @@ const EndpointAddress *EndpointGroup::get_one()
if (!addr)
{
std::random_shuffle(this->backups.begin(), this->backups.end());
std::shuffle(this->backups.begin(), this->backups.end(), this->gen);
for (size_t i = 0; i < this->backups.size(); i++)
{
if (this->backups[i]->fail_count < this->backups[i]->params->max_fails)
@@ -222,7 +222,7 @@ const EndpointAddress *EndpointGroup::get_one_backup()
const EndpointAddress *addr = NULL;
pthread_mutex_lock(&this->mutex);
std::random_shuffle(this->backups.begin(), this->backups.end());
std::shuffle(this->backups.begin(), this->backups.end(), this->gen);
for (size_t i = 0; i < this->backups.size(); i++)
{
if (this->backups[i]->fail_count < this->backups[i]->params->max_fails)
+6 -1
View File
@@ -20,8 +20,10 @@
#define _UPSTREAM_POLICIES_H_
#include <pthread.h>
#include <algorithm>
#include <vector>
#include <atomic>
#include <random>
#include "URIParser.h"
#include "EndpointParams.h"
#include "WFNameService.h"
@@ -56,13 +58,16 @@ public:
UPSGroupPolicy *policy;
struct rb_node rb;
pthread_mutex_t mutex;
std::random_device rd;
std::mt19937 gen;
std::vector<EndpointAddress *> mains;
std::vector<EndpointAddress *> backups;
std::atomic<int> nalives;
int weight;
EndpointGroup(int group_id, UPSGroupPolicy *policy) :
mutex(PTHREAD_MUTEX_INITIALIZER)
mutex(PTHREAD_MUTEX_INITIALIZER),
gen(rd())
{
this->id = group_id;
this->policy = policy;