I'm writing multithreading server using CSocket. So, as usually, I have listening server socket, and need to create receiving socket for each connected client. To provide multiple clients handling, I want to create new std::thread for each client, detach it, and next handle this client inside thread function.
I'm trying to do like this:
int client_handler(CSocket receiver)
{
return 1;
}
CSocket server;
BOOL created = server.Create(12345);
server.Listen();
while(true)
{
CSocket receiver;
if (server.Accept(receiver))
{
std::thread handler(client_handler, receiver);
}
}
...
I got a compiler error at std::thread instantiation :
error C2664: 'std::tuple<int (__cdecl *)(CSocket),CSocket>::tuple(std::tuple<int (__cdecl *)(CSocket),CSocket> &&)': cannot convert argument 1 from 'int (__cdecl &)(CSocket)' to 'std::allocator_arg_t'
I've read std::thread docs, but still can't understand - why СSocket cannot be passed to?
Aucun commentaire:
Enregistrer un commentaire