用C++ Thread实现简单的socket多线程通信
起因
为什么要用C++的Thread
,很简单,因为我菜
一打五用pthread
实现了socket多线程通信,我之前学并发的时候没看pthread
,因此代码只能看个大概,后面还是要系统学一下pthread
的
服务端
多线程功能放在腾讯云服务器上,代码如下:
#include "tcpserver.h"
#include <thread>
#include <mutex>
TcpServer server;
mutex tcp_mutex;
void tcpFunc(int clientfd);
int main(int argc, char *argv[])
{
if (server.initServer(6666) == false)
{
cout << "服务端初始化失败!!!" << endl;
return -1;
}
vector<thread> tcp_vec;
while (true)
{
if (!server.tcpAccept())
{
continue;
}
tcp_vec.emplace_back(tcpFunc, server.m_connectfd);
// thread tcpThread(tcpFunc, server.m_connectfd);
// if (tcpThread.joinable())
if(tcp_vec.back().joinable())
{
// cout << "Tcp thread " << tcpThread.get_id() << "is joinable!" << endl;
cout << "Tcp thread " << tcp_vec.back().get_id() << " is joinable!" << endl;
tcp_vec.back().detach();
}
}
return 0;
}
void tcpFunc(int clientfd)
{