小编viv*_*vek的帖子

使用boost asio的线程池

我正在尝试使用boost :: asio创建一个有限的线程池类.但是我被困在某一点可以帮助我.

唯一的问题是我应该减少反击的地方?

代码无法按预期工作.

问题是我不知道我的线程何时完成执行以及我将如何知道它已经返回池中

#include <boost/asio.hpp>
#include <iostream>
#include <boost/thread/thread.hpp>
#include <boost/bind.hpp>
#include <boost/thread/mutex.hpp>
#include <stack>

using namespace std;
using namespace boost;

class ThreadPool
{
    static int count;
    int NoOfThread;
    thread_group grp;
    mutex mutex_;
    asio::io_service io_service;
    int counter;
    stack<thread*> thStk ;

public:
    ThreadPool(int num)
    {   
        NoOfThread = num;
        counter = 0;
        mutex::scoped_lock lock(mutex_);

        if(count == 0)
            count++;
        else
            return;

        for(int i=0 ; i<num ; ++i)
        {
            thStk.push(grp.create_thread(boost::bind(&asio::io_service::run, &io_service)));
        }
    }
    ~ThreadPool()
    {
        io_service.stop();
        grp.join_all();
    }

    thread* getThread()
    { …
Run Code Online (Sandbox Code Playgroud)

c++ boost-asio threadpool

20
推荐指数
1
解决办法
2万
查看次数

我如何使用游标从表中删除记录

我想用光标从表中删除记录.我该怎么做?

我使用MSSQL 2008 Express这段代码不会删除#temp中的任何内容.我也尝试过当前的cursor_name不起作用.

这是我的示例代码:

use AdventureWorks

drop table #temp
select * into #temp from HumanResources.Employee;

declare @eid as int;
declare @nid as varchar(15);


DECLARE Employee_Cursor CURSOR FOR
SELECT A.EmployeeID, A.NationalIDNumber FROM #temp AS A
OPEN Employee_Cursor;
FETCH NEXT FROM Employee_Cursor INTO @eid , @nid ;
WHILE @@FETCH_STATUS = 0
   BEGIN
      IF (@eid > 10)
      BEGIN
        delete from #temp where #temp.EmployeeID = @eid;
      END
      FETCH NEXT FROM Employee_Cursor;
   END;
CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO

select * from #temp
Run Code Online (Sandbox Code Playgroud)

提前致谢

sql-server cursor

6
推荐指数
2
解决办法
3万
查看次数

为什么动态数组比静态数组慢

在我目前的项目中,我需要对大数据阵列进行操作.所以我做了一个愚蠢的测试来检查哪一个会更好,但在尝试下面的代码时我发现动态数组比静态数组慢得多为什么呢?或者我做错了什么?

这里是代码(我从这里删除矢量(执行等于动态)和增强数组(等于静态))

结果:静态8,动态7493

#include<iostream>
#include<vector>


using namespace std;
using namespace boost;
double arr_time;
double darr_time;

void arrr()
{
int arr[100000];
LARGE_INTEGER start,end;
QueryPerformanceCounter(&start);

for(int i=0 ; i <100000 ; ++i)
{
    arr[i] = 10 ;
}
for(int i=0 ; i <100000 ; ++i)
{
    int x = arr[i];
}
QueryPerformanceCounter(&end);

arr_time += (end.LowPart - start.LowPart);
}

void darr()
{
int *arr = new int[100000];
LARGE_INTEGER start,end;
QueryPerformanceCounter(&start);

for(int i=0 ; i <100000 ; ++i)
{
    arr[i] = 10 ;
} …
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
2
解决办法
1704
查看次数

如何使用游标更新记录

我正在使用下面的查询来更新我的所有记录,但它从第二行开始更新如何修改它以从第1行进行更改?

我正在使用mssql 2008

我认为我不能@@FETCH_STATUS用作第一线,因为它是全球性的.

提前致谢

use vivdb

DECLARE @empno as int;
select @empno = 10;

DECLARE Employee_Cursor CURSOR FOR select * from emp
OPEN Employee_Cursor;

FETCH NEXT from Employee_Cursor

WHILE @@FETCH_STATUS = 0
   BEGIN

      update emp set empno = @empno;
      select @empno = @empno+1;

     FETCH NEXT from Employee_Cursor
   END;

CLOSE Employee_Cursor;
DEALLOCATE Employee_Cursor;
GO
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

2
推荐指数
1
解决办法
3万
查看次数

使用boost条件变量

我正在尝试使用代码来测试同步化的boost条件变量,这段代码会同步.但它只显示4个值这里有什么问题?,我怎么能解决它?

在Windows 7上使用vs 2012

提前致谢.

#include <iostream>
#include <queue>

#include "boost\thread.hpp"
#include "boost\timer.hpp"

using namespace std;

int counter;

boost::mutex m;
boost::condition_variable CworkDone;
bool workdone = true;

bool procOn = true;

void display()
{
while (procOn == true)
{
    boost::mutex::scoped_lock lock(m);      

    if (workdone)
    {
        cout<<counter<<endl;
        CworkDone.notify_one();
        workdone = false;
    }   
    else 
    {
        CworkDone.wait(lock);
    }
}

}

void increment()
{
for(int i = 0 ; i <10 ; ++i)
{

    boost::mutex::scoped_lock lock(m);

    if (!workdone)
    {
        boost::this_thread::sleep(boost::posix_time::millisec(500));
        ++counter;
        workdone = true;
        CworkDone.notify_one();
    } …
Run Code Online (Sandbox Code Playgroud)

c++ boost

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×3

sql-server ×2

boost ×1

boost-asio ×1

cursor ×1

sql ×1

sql-server-2008 ×1

threadpool ×1