40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#ifndef SHARED_BARRIERS_HPP
|
|
#define SHARED_BARRIERS_HPP
|
|
|
|
#include <boost/interprocess/sync/named_mutex.hpp>
|
|
#include <boost/interprocess/sync/named_condition.hpp>
|
|
|
|
namespace osrm
|
|
{
|
|
namespace storage
|
|
{
|
|
struct SharedBarriers
|
|
{
|
|
|
|
SharedBarriers()
|
|
: pending_update_mutex(boost::interprocess::open_or_create, "pending_update"),
|
|
update_mutex(boost::interprocess::open_or_create, "update"),
|
|
query_mutex(boost::interprocess::open_or_create, "query"),
|
|
no_running_queries_condition(boost::interprocess::open_or_create, "no_running_queries"),
|
|
update_ongoing(false), number_of_queries(0)
|
|
{
|
|
}
|
|
|
|
// Mutex to protect access to the boolean variable
|
|
boost::interprocess::named_mutex pending_update_mutex;
|
|
boost::interprocess::named_mutex update_mutex;
|
|
boost::interprocess::named_mutex query_mutex;
|
|
|
|
// Condition that no update is running
|
|
boost::interprocess::named_condition no_running_queries_condition;
|
|
|
|
// Is there an ongoing update?
|
|
bool update_ongoing;
|
|
// Is there any query?
|
|
int number_of_queries;
|
|
};
|
|
}
|
|
}
|
|
|
|
#endif // SHARED_BARRIERS_HPP
|