|
@@ -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;
|