[英]C++ Simple Thread Pool
我試圖在C ++中實現一個簡單的線程池,如下所示:
class worker {
public:
worker();
thread mThread;
private:
void run();
};
worker::worker() {
(this->mThread = thread(&worker::run, this)).detach();
}
class threadpool {
public:
threadpool(int size);
void addTask();
private:
vector<worker> workers;
};
但是,當我添加線程池的構造函數時:
threadpool::threadpool(int size) {
this->workers = vector<worker>(size, worker());
}
我收到“試圖引用已刪除的函數”錯誤,據我所知,這意味着我試圖在代碼中的某個地方復制線程。 有什么辦法解決這個問題?
最小的更改是:
threadpool::threadpool(int size) {
this->workers = vector<worker>(size);
}
也就是說,初始化程序列表很不錯。
threadpool::threadpool(int size)
: workers{size}
{ }
(您應該從int size
更改為size_t
或者-如果您感覺很聖潔--vector vector<worker>::size_type
)。
它提供了一個請求復制的原型worker()
對象,由於您提供了顯式的默認構造函數,因此刪除了隱式構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.