当前位置: 首页 > wzjs >正文

jsp做的零食店网站长沙seo全网营销

jsp做的零食店网站,长沙seo全网营销,网站建设价值,wordpress短信验证码错误程序运行时,通常会频繁地进行内存的分配和释放操作。传统的内存分配方式(如使用new和delete运算符)可能会导致内存碎片的产生,并且每次分配和释放内存都有一定的时间开销。内存池通过在程序启动时一次性分配一大块内存或一次性分配…

程序运行时,通常会频繁地进行内存的分配和释放操作。传统的内存分配方式(如使用new和delete运算符)可能会导致内存碎片的产生,并且每次分配和释放内存都有一定的时间开销。内存池通过在程序启动时一次性分配一大块内存或一次性分配多个对象备用,然后在需要时从使用这些内存。当程序使用完内存后,将其归还给内存池,而不是直接释放回操作系统,以此来提高内存分配的效率并减少内存碎片。

#ifndef MEMORY_POOL_HPP_
#define MEMORY_POOL_HPP_#include <condition_variable>
#include <list>
#include <memory>
#include <queue>
#include <type_traits>
#include <utility>#if __cplusplus < 201103L
#error "This program requires C++11 or a later version to compile."
#elif __cplusplus < 201703L
#include <mutex>
#else
#include <shared_mutex>
#endiftemplate <typename ElementType>
class MemoryPool final {template <typename T, typename = void>struct HasReset : std::false_type {};template <typename T>struct HasReset<T, std::void_t<decltype(std::declval<T>().Reset())>> : std::true_type {};static_assert(HasReset<ElementType>::value, "T must has Reset() function");#if __cplusplus < 201703Lusing mutex       = std::mutex;using lock_guard  = std::lock_guard<std::mutex>;using unique_lock = std::lock_guard<std::mutex>;
#elseusing mutex       = std::shared_mutex;using lock_guard  = std::lock_guard<std::shared_mutex>;using unique_lock = std::lock_guard<std::shared_mutex>;
#endifpublic:using SharedPtr = std::shared_ptr<MemoryPool>;using UniquePtr = std::unique_ptr<MemoryPool>;private:explicit MemoryPool(const std::size_t capacity) : capacity(capacity) {}public:MemoryPool(const MemoryPool &)            = delete;MemoryPool(MemoryPool &&)                 = delete;MemoryPool &operator=(const MemoryPool &) = delete;MemoryPool &operator=(MemoryPool &&)      = delete;~MemoryPool() {lock_guard lck(mu);for (auto *item : this->itemAll) {delete item;}this->itemAll.clear();while (!this->itemAvailable.empty()) {this->itemAvailable.pop();}}template <typename... Args>static std::shared_ptr<MemoryPool> Create(std::size_t capacity, Args &&...args) {auto *poolPtr = new MemoryPool(capacity);for (int32_t i = 0; i < poolPtr->capacity; i++) {auto *itemPtr = new ElementType(std::forward<Args>(args)...);poolPtr->itemAll.push_back(itemPtr);poolPtr->itemAvailable.push(itemPtr);}return std::shared_ptr<MemoryPool>(poolPtr);}bool GetSharedPtr(std::shared_ptr<ElementType> &sharedItemPtr, const int32_t timeout = 0) {unique_lock lck(mu);if (timeout > 0) {this->cv.wait_for(lck, std::chrono::milliseconds(timeout), [this] { return !this->itemAvailable.empty(); });} else {this->cv.wait(lck, [this] { return !this->itemAvailable.empty(); });}if (this->itemAvailable.empty()) {sharedItemPtr = nullptr;return false;}auto *itemPtr = this->itemAvailable.front();this->itemAvailable.pop();sharedItemPtr = std::shared_ptr<ElementType>(itemPtr, [this](ElementType *elementPtr) {elementPtr->Reset();this->itemAvailable.push(elementPtr);this->cv.notify_all();});return true;}private:mutex                     mu;std::condition_variable   cv;std::list<ElementType *>  itemAll;std::queue<ElementType *> itemAvailable;std::size_t               capacity;
};
#endif
http://www.dtcms.com/wzjs/349895.html

相关文章:

  • 成安专业做网站什么是seo如何进行seo
  • 手机wap网站开发免费网站外链推广
  • 宜春网站制作百度号注册官网
  • 怎样做网站404网上学电脑培训中心
  • dede系统做的网站如何调用cu3er官网flash 3d焦点图游戏优化大师
  • php网站首页模板关键少数
  • pc端的移动端网站建设国内免费推广产品的网站
  • html5网站源码下载线上推广的渠道有哪些
  • 网站服务器容器快速排名工具免费
  • 建站程序选择网络营销策划书
  • 网站的页头页脚怎么做济南网站运营公司
  • 做外贸的阿里巴巴网站是哪个好湖北百度推广电话
  • 使用java做网站seo关键词排名网络公司
  • 大学网页设计作业百度seo流量
  • 打金传奇rmb回收惠州seo外包
  • 苏州网站设计公司兴田德润i网址多少线下引流推广方法
  • 建设网站计入什么科目网络营销和推广做什么
  • 国外商品网站抖音指数查询
  • vps网站建设管理培训机构
  • 功能网站建设自己做网站设计制作
  • 做外贸主要在那些网站找单产品推广文案100字
  • 安卓做网站教程网络广告投放渠道有哪些
  • 万网网站流量seo牛人
  • 鸿兴网站建设公司什么是软文营销?
  • WordPress网站属于什么网站谷歌外贸平台叫什么
  • 网站没服务器行吗淘宝如何提升关键词排名
  • 舞蹈培训网站模板东莞做网站优化
  • 网站一定也做数据库吗网址大全浏览器app
  • 手机自助网站建设seo的基本内容
  • 游戏微网站模板营销软文广告