来一份数据服务器缓存加锁C++源码示例
以下是一个简单的数据服务器缓存加锁的C++源码示例:
#include <iostream>
#include <unordered_map>
#include <mutex>
class DataServerCache {
private:
std::unordered_map<std::string, std::string> cache;
std::mutex mutex;
public:
std::string getData(const std::string& key) {
std::lock_guard<std::mutex> lock(mutex);
if (cache.find(key) != cache.end()) {
return cache[key];
}
// Simulate fetching data from the actual data server
std::string data = fetchDataFromServer(key);
cache[key] = data;
return data;
}
void updateData(const std::string& key, const std::string& data) {
std::lock_guard<std::mutex> lock(mutex);
cache[key] = data;
// Simulate updating data on the actual data server
updateDataOnServer(key, data);
}
void deleteData(const std::string& key) {
std::lock_guard<std::mutex> lock(mutex);
cache.erase(key);
// Simulate deleting data from the actual data server
deleteDataFromServer(key);
}
private:
std::string fetchDataFromServer(const std::string& key) {
// Fetch data from the actual data server
std::cout << "Fetching data from server for key: " << key << std::endl;
// Simulating a delay in fetching data
std::this_thread::sleep_for(std::chrono::seconds(2));
return "Data for key: " + key;
}
void updateDataOnServer(const std::string& key, const std::string& data) {
// Update data on the actual data server
std::cout << "Updating data on server for key: " << key << std::endl;
// Simulating a delay in updating data
std::this_thread::sleep_for(std::chrono::seconds(2));
}
void deleteDataFromServer(const std::string& key) {
// Delete data from the actual data server
std::cout << "Deleting data from server for key: " << key << std::endl;
// Simulating a delay in deleting data
std::this_thread::sleep_for(std::chrono::seconds(2));
}
};
int main() {
DataServerCache cache;
// Example usage
std::string data = cache.getData("key1");
std::cout << "Data: " << data << std::endl;
cache.updateData("key2", "new data");
std::cout << "Data updated." << std::endl;
cache.deleteData("key1");
std::cout << "Data deleted." << std::endl;
return 0;
}
在这个示例中,DataServerCache类实现了一个简单的数据服务器缓存,并使用std::mutex来确保对缓存的并发访问是线程安全的。getData方法用于从缓存中获取数据,如果缓存中不存在,则从实际数据服务器获取数据,并将其存储在缓存中。updateData方法用于更新缓存和实际数据服务器中的数据。deleteData方法用于从缓存和实际数据服务器中删除数据
原文地址: https://www.cveoy.top/t/topic/hWgG 著作权归作者所有。请勿转载和采集!