vertex arrivals lock

This commit is contained in:
James Cherry 2020-04-19 15:23:16 -07:00
parent d50069d67e
commit f4d833f1b5
3 changed files with 10 additions and 5 deletions

View File

@ -515,9 +515,14 @@ Graph::makeArrivals(Vertex *vertex,
}
Arrival *
Graph::arrivals(Vertex *vertex) const
Graph::arrivals(Vertex *vertex)
{
return arrivals_.pointer(vertex->arrivals());
Arrival *arrivals;
{
UniqueLock lock(arrivals_lock_);
arrivals = arrivals_.pointer(vertex->arrivals());
}
return arrivals;
}
void

View File

@ -100,7 +100,7 @@ public:
VertexId vertexCount() { return vertices_->size(); }
Arrival *makeArrivals(Vertex *vertex,
uint32_t count);
Arrival *arrivals(Vertex *vertex) const;
Arrival *arrivals(Vertex *vertex);
void clearArrivals();
PathVertexRep *makePrevPaths(Vertex *vertex,
uint32_t count);
@ -274,7 +274,7 @@ public:
bool isRoot() const{ return level_ == 0; }
LevelColor color() const { return static_cast<LevelColor>(color_); }
void setColor(LevelColor color);
ArrivalId arrivals() const { return arrivals_; }
ArrivalId arrivals() { return arrivals_; }
void setArrivals(ArrivalId id);
PrevPathId prevPaths() const { return prev_paths_; }
void setPrevPaths(PrevPathId id);

View File

@ -132,7 +132,7 @@ PathVertexRep::tag(const StaState *sta) const
Arrival
PathVertexRep::arrival(const StaState *sta) const
{
const Graph *graph = sta->graph();
Graph *graph = sta->graph();
const Search *search = sta->search();
Tag *tag = search->tag(tag_index_);
Vertex *vertex = graph->vertex(vertex_id_);