【发布时间】:2016-08-14 22:32:20
【问题描述】:
我正在尝试制作一个可以接受许多客户端的 Winsock 服务器。为了做到这一点,我被告知使用线程向量。所以这就是我想做的,但我得到了这个错误:
错误 3 错误 C2064:该术语不计算为具有 0 个参数的函数 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\functional 1152 1 Server
而我的服务器代码是这样的:
using namespace std;
int __cdecl NewClient(SOCKET ListenSocket, SOCKET ClientSocket, char *recvbuf, int recvbuflen, int iSendResult, int iResult)
vector<thread> thred;
int __cdecl main(void) {
//things
SOCKET ListenSocket=INVALID_SOCKET;
SOCKET ClientSocket=INVALID_SOCKET;
char recvbuf[DEFAULT_BUFLEN];
int recvbuflen = DEFAULT_BUFLEN;
int iSendResult=0;
int iResult;
thred.push_back(thread(NewClient,ListenSocket, ClientSocket, recvbuf, recvbuflen, iSendResult, iResult));
thred[thred.size()-1].detach();
}
int __cdecl NewClient(SOCKET ListenSocket, SOCKET ClientSocket, char *recvbuf, int recvbuflen, int iSendResult, int iResult){
//things
}
我认为错误是我试图回退新线程的地方。反推是这样用的吗?或者我该怎么办?
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
cppreference.com 说“std::thread 不是 CopyConstructible 或 CopyAssignable,尽管它是 MoveConstructible 和 MoveAssignable。”
标签: c++ multithreading vector server winsock