在尝试写一个iocp的库的时候犹豫CSocket是否提供拷贝构造函数,结论是不要

在尝试写一个iocp的库的时候犹豫CSocket是否提供拷贝构造函数,结论是不要
void TestMainEntry()
{
    boost::asio::io_service ioService;
    boost::asio::ip::tcp::socket tcpSocket(ioService);
    boost::asio::ip::tcp::socket tcpSocket1(ioService);
   // tcpSocket = tcpSocket1;
}
void TestIfFstreamCanCopy()
{
    std::fstream fs0;
    std::fstream fs1;
    // cause compile error
    //fs0 = fs1;
}



犹豫的时候去看了下asio,发现asio的是不能copy的,然后去看了下类似fstream,发现也是不能拷贝的。
分析了下原因,像socket、文件句柄、或者是stream类似的东西,本来就不应该出现多个拷贝,如果有多个拷贝就有多个读写入口,这样会放纵程序员扩散这些入口。
在配上多线程和多模块多入口写入,就会把系统复杂化。

你可能感兴趣的:(在尝试写一个iocp的库的时候犹豫CSocket是否提供拷贝构造函数,结论是不要)