windows 下C++对象池实现,支持并发
来源:互联网 发布:网络销售是什么意思 编辑:程序博客网 时间:2024/05/24 04:43
#pragma once//#include "FSNIAlgo.h"#include "Windows.h"#include <queue>#define MINALGOSIZE 1template<class T>class FSNIObjPool{public:FSNIObjPool(void);~FSNIObjPool(void);void AlloAlgoPool();T* GetAlgoObj();void ReleaseAlgoObj(T *p);void DeleteAlgoObj(T *obj);private:HANDLE m_hAlgoMutex;std::queue<T *> m_queAlgoPool;};
<pre name="code" class="cpp">#include "StdAfx.h"#include "FSNIObjPool.h"template<typename T>FSNIObjPool<T>::FSNIObjPool(void){m_hAlgoMutex = CreateMutex(NULL, FALSE, NULL);if (!m_hAlgoMutex){printf("CreateMutex failed, error id=%d!!!!!", GetLastError());}}template<typename T>FSNIObjPool<T>::~FSNIObjPool(void){int i = m_queAlgoPool.size();while(m_queAlgoPool.size()>0){T *fsni = m_queAlgoPool.front();m_queAlgoPool.pop();DeleteAlgoObj(fsni);}}template<typename T>void FSNIObjPool<T>::AlloAlgoPool(){for (int i=0; i<MINALGOSIZE; i++){T *algo = new T();algo->InitFaceObj();m_queAlgoPool.push(algo);}}template<typename T>T* FSNIObjPool<T>::GetAlgoObj(){WaitForSingleObject(m_hAlgoMutex, INFINITE);for (int i=0; i<m_queAlgoPool.size(); i++){T *fsni = m_queAlgoPool.front();m_queAlgoPool.pop();ReleaseMutex(m_hAlgoMutex);return fsni;}T *fsni = new T;fsni->InitFaceObj();ReleaseMutex(m_hAlgoMutex);return fsni;}template<typename T>void FSNIObjPool<T>::ReleaseAlgoObj(T *p){WaitForSingleObject(m_hAlgoMutex, INFINITE);m_queAlgoPool.push(p);ReleaseMutex(m_hAlgoMutex);}template<typename T>void FSNIObjPool<T>::DeleteAlgoObj(T *obj){delete obj;}
0 0
- windows 下C++对象池实现,支持并发
- J.U.C下的并发容器的并发实现
- Windows下基于socket多线程并发通信的实现
- 一个通用并发对象池的实现
- 一个通用并发对象池的实现
- 并发对象池的实现过程
- 一个通用并发对象池的实现
- 通用并发对象池的实现
- Windows下配置Apache支持PHP,PHP.ini不放入c:/windows下
- C实现Windows下的ping功能
- windows下表达式计算器C实现
- windows下用c实现Socket通信
- c实现网络抓包windows下
- windows下用C语言实现ping
- socket下server端支持多客户端并发访问简单实现
- windows下apache并发配置
- windows下使用gvim搭建简单的IDE编译环境(支持C/C++/Python等)
- Windows下Eclipse 实现JNI C++/C断点调试
- HTTP请求返回的数字代表的具体含义
- LeetCode ---- Add Digits (Java/Lua 实现)
- 面试感悟----一名3年工作经验的程序员应该具备的技能
- jsp原理详解
- emacs terminal
- windows 下C++对象池实现,支持并发
- postgresql中角色和权限的问题
- 补VC基础
- redis连接过多的一个解决方法
- 测试编辑器
- html5 canvas绘图之fillStyle,strokeStyle的区别
- NOIP 2015 && UOJ#150 运输计划
- 递归算法是一种直接或者间接调用自身函数或者方法的算法
- 待看-springMVC系列之(四) spring+springMVC+hibernate 三大框架整合