最近几天在思考无锁队列,看了相关文章,也读了一些博客,最后写了一份代码,代码实现对在多线程环境下对队列的读和写是不需要加锁的。代码如下所示:
#include <windows.h>
#pragma comment(lib, "Kernel32.lib")
template<typename VT>
class LcFQue{//lock free queue
public:
struct QueNode{
QueNode *next;
VT value;
};
public:
LcFQue();
~LcFQue();
public:
void EnQue(const VT& val);
VT DeQue();
private:
QueNode *tail;
QueNode *head;
};
template<typename VT>
LcFQue<VT>::LcFQue(){
tail= head= new QueNod