Pārlūkot izejas kodu

做一些无关紧要的小修改

Gogs 3 mēneši atpakaļ
vecāks
revīzija
fd130dc69e
7 mainītis faili ar 27 papildinājumiem un 15 dzēšanām
  1. 1 0
      .gitignore
  2. 14 12
      lib/extend/extend.md
  3. 0 0
      lib/nanxing_extend.h
  4. 5 0
      lib/nanxing_others.h
  5. 1 1
      lib/nanxing_type_trait.h
  6. 5 2
      lib/others/thread_pool.h
  7. 1 0
      test.sh

+ 1 - 0
.gitignore

@@ -38,5 +38,6 @@ build/
 test
 filter_test
 randomfunctiontest
+test_result.txt
 
 

+ 14 - 12
lib/extend/extend.md

@@ -2,31 +2,33 @@
 <p>这个extend的目的是为了完成一个完整的数据库库,一个完整的数据库从的我的设计上看包含以下几个部分</p>
 
 ## 基本组件
-<p>|-内存缓存</p>
-<p>|-查询过滤器</p>
-<p>|-持久化存储</p>
-<p>|-数据序列化</p>
-<p>|-数据反序列化</p>
-<p>|-LRU缓存</p>
-<p>|-辅存操作日志</p>
-<p>|-程序运行日志</p>
-<p>|-配置文件解析</p>
+<p>|--内存缓存</p>
+<p>|--查询过滤器</p>
+<p>|--持久化存储</p>
+<p>|--数据序列化</p>
+<p>|--数据反序列化</p>
+<p>|--LRU缓存</p>
+<p>|--辅存操作日志</p>
+<p>|--程序运行日志</p>
+<p>|--配置文件解析</p>
 
 ### 内存缓存
+-skiplist.h
 用skiplist作为内存缓存数据结构,skiplist有实现简单,插入删除时间复杂度低,相对红黑树,插入删除调整方便,同时支持连续索引,redis和leveldb都是使用skiplist作为缓存。(目前还有一些操作没有验证,没有实现迭代器)
 
 ### 查询过滤器
-为了防止出现缓存穿透,提供了相应的过滤器,目前包括bloomfilter和Cuckoofilter来实现数据存在性校验(bloomfilter还没有实现)
+
+为了防止出现缓存穿透,提供了相应的过滤器,目前包括bloomfilter和Cuckoofilter来实现数据存在性校验(Cuckoofilter还没有实现,bloomfilter还没有完全测试)
 
 ### 持久化存储
-将数据持久化存储到磁盘上,在持久化存储中使用lsm-tree来实现高性能写入
+将数据持久化存储到磁盘上,在持久化存储中使用lsm-tree来实现高性能写入
 
 ### 数据序列化
 
 ### 数据反序列化
 
 ### LRU缓存
-使用LRU算法来实现内存查询缓存
+使用LRU算法来实现磁盘查询缓存
 
 ### 辅存操作日志
 防止写入的丢失

lib/nanxing_other.h → lib/nanxing_extend.h


+ 5 - 0
lib/nanxing_others.h

@@ -0,0 +1,5 @@
+#ifndef NANXING_OTHERS_H_
+#define NANXING_OTHERS_H_
+
+
+#endif

+ 1 - 1
lib/nanxing_type_trait.h

@@ -1,6 +1,6 @@
 #ifndef NANXING_TYPE_TRAIT_
 #define NANXING_TYPE_TRAIT_
-
+#include"basic/nanxing_operator_check.h"
 namespace nanxing
 {
     template<typename T>

+ 5 - 2
lib/others/thread_pool.h

@@ -12,6 +12,8 @@
 #include"../basic/nanxing_operator_check.h"
 #include"../basic/nanxing_basic_signal_linklist.h"          //任务链表
 
+
+//要求使用std::package作为任务传递的包装器
 namespace nanxing
 {
     template<typename T>                     //一个不带有任务窃取的简单可伸缩队列(明天实现伸缩)
@@ -39,8 +41,8 @@ namespace nanxing
                 {
                     //std::cout<<"a"<<std::endl;
                     std::unique_lock<std::mutex> ulk(queue_mutex);
-                    task_empty.wait(ulk,[&]{return (bool(tasks.list_size()));});         //如果任务队列为空则阻塞
-                    if(done)
+                    task_empty.wait(ulk,[this]{return (bool(tasks.list_size()));});         //如果任务队列为空则阻塞
+                    if(done)                  //这个是必须的,因为在操作过程中有可能会被其他的线程改变
                     {
                         break;
                     }
@@ -102,6 +104,7 @@ namespace nanxing
             }
             return 1;
         }
+
         int get_size()
         {
             return Max_size;

+ 1 - 0
test.sh

@@ -1,3 +1,4 @@
+rm test_result.txt
 cd lib/tests/
 echo -e "begin test\n"
 echo -e "test -list\n"