前言
此博客记录对于TinyWebServer项目的学习,并根据自己的理解做出些许更改。
原项目地址:https://github.com/qinguoyi/TinyWebServer
阻塞队列
阻塞队列特性,当队列中没有元素时,对这个队列的弹出操作将会被阻塞,
直到有元素被插入时才会被唤醒;当队列已满时,对这个队列的插入操作就会被阻塞,
直到有元素被弹出后才会被唤醒。
queue容器在程序结束时才会释放内存,deque可以动态释放,
也可使用new分配容器再使用delete释放,
vector* vec_ptr = new vector;
delete vec_ptr;
使用数组实现可以预留出固定大小的内存,个人理解使用数组的优势所在。
代码实现
#ifndef BLOCK_QUEUE_H
#define BLOCK_QUEUE_H
#include <iostream>
#include <stdlib.h>
#include <pthread.h>
#include <sys/time.h>
#include "../locker/locker.h"
template <class T>
class block_queue
{
public:
block_queue(int max_size = 1000)
{
if (max_size <= 0)
{
exit(-1);
}
m_max_size = max_size;
m_array = new T[max_size];
m_size = 0;
m_front = -1;
m_back = -1;
}
void clear()
{
m_mutex.lock();
m_size = 0;
m_front = -1;
m_back = -1;
m_mutex.unlock();
}
~block_queue()
{
m_mutex.lock();
if (m_array != NULL)
delete [] m_array;
m_mutex.unlock();
}