class ThreadClass
{
public:
//void SendUpdatePackage(int stationNum, int &nResult, string &szErrMsg, std::vector<sockaddr_in> &BSAddrVector);
int Print(int stationnum)
{
return stationnum;
}
private:
//std::mutex m_SFTPMutex;
};
int main()
{
std::vector<std::thread> sftpThreadVec;
int nResult = 0;
ThreadClass tc;
for (int i = 0; i < nThreadNum; i++)
{
thread my_thread(&ThreadClass::Print, &tc, i);
sftpThreadVec.push_back(my_thread);
}
for (auto &a : sftpThreadVec)
a.join();
return 0;
}
這裏 報錯 “std::thread::thread(const std::thread &)”: 嘗試引用已刪除的函數
查看 thread 源碼看到下面這行
thread(const thread&) = delete;
這裏是禁用了thread的拷貝構造
而 std::vector 和 std::map 都是要求 類型 必須包含拷貝構造函數
所以不能用 std::vector<std::mutex>
可以這樣
int nResult = 0;
ThreadClass tc;
std::thread thArr[4];
for (int i = 0; i < 4; i++)
{
thArr[i] = std::thread(&ThreadClass::Print, &tc, i);
}
for (auto &a : thArr)
a.join();