Commit 6e0b58ba authored by Guolin Ke's avatar Guolin Ke
Browse files

thread-safe for set field of dataset

parent 962b7eb0
......@@ -13,6 +13,7 @@
#include <functional>
#include <string>
#include <unordered_set>
#include <mutex>
namespace LightGBM {
......@@ -234,6 +235,8 @@ private:
std::vector<float> init_score_;
/*! \brief Queries data */
std::vector<data_size_t> queries_;
/*! \brief mutex for threading safe call */
std::mutex mutex_;
};
......
......@@ -30,7 +30,6 @@ public:
Booster(const Dataset* train_data,
const char* parameters) {
std::lock_guard<std::mutex> lock(mutex_);
auto param = ConfigBase::Str2Map(parameters);
config_.Set(param);
// create boosting
......
......@@ -196,6 +196,7 @@ void Metadata::CheckOrPartition(data_size_t num_all_data, const std::vector<data
void Metadata::SetInitScore(const float* init_score, data_size_t len) {
std::lock_guard<std::mutex> lock(mutex_);
// save to nullptr
if (init_score == nullptr || len == 0) {
init_score_.clear();
......@@ -214,6 +215,7 @@ void Metadata::SetInitScore(const float* init_score, data_size_t len) {
}
void Metadata::SetLabel(const float* label, data_size_t len) {
std::lock_guard<std::mutex> lock(mutex_);
if (label == nullptr) {
Log::Fatal("label cannot be nullptr");
}
......@@ -228,6 +230,7 @@ void Metadata::SetLabel(const float* label, data_size_t len) {
}
void Metadata::SetWeights(const float* weights, data_size_t len) {
std::lock_guard<std::mutex> lock(mutex_);
// save to nullptr
if (weights == nullptr || len == 0) {
weights_.clear();
......@@ -247,6 +250,7 @@ void Metadata::SetWeights(const float* weights, data_size_t len) {
}
void Metadata::SetQueryBoundaries(const data_size_t* query_boundaries, data_size_t len) {
std::lock_guard<std::mutex> lock(mutex_);
// save to nullptr
if (query_boundaries == nullptr || len == 0) {
query_boundaries_.clear();
......@@ -270,6 +274,7 @@ void Metadata::SetQueryBoundaries(const data_size_t* query_boundaries, data_size
}
void Metadata::SetQueryId(const data_size_t* query_id, data_size_t len) {
std::lock_guard<std::mutex> lock(mutex_);
// save to nullptr
if (query_id == nullptr || len == 0) {
query_boundaries_.clear();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment