上一页 1 2 3 4 5 6 ··· 26 下一页
  2021年2月5日
摘要: 两种结构的客户端对比网络消息性能 服务端均为单线程服务端。 1.单线程客户端,1000个连接 2.多线程客户端,4个线程,每个线程250个连接 结论:多线程的客户端,网络性能提升非常大。 多线程客户端的代码: DataHeader.hpp #ifndef _MessageHeader_hpp_ #d 阅读全文
posted @ 2021-02-05 21:59 邶风 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 参考资料:https://zhuanlan.zhihu.com/p/107092432 所谓原子操作,就是多线程程序中“最小的且不可并行化的”操作。 对于在多个线程间共享的一个资源而言,这意味着同一时刻,多个线程中有且仅有一个线程在对这个资源进行操作,即互斥访问。 #include <iostrea 阅读全文
posted @ 2021-02-05 16:00 邶风 阅读(50) 评论(0) 推荐(0) 编辑
  2021年2月4日
摘要: 不合理的设定临界区域,会让线程的调用失去意义。 1.不应该频繁的使用锁 2.减小锁使用的区域,线程公共资源之外 的资源 尽量不要放到临界区。 示例一:(这样使用线程锁,设定的临界区域不合理,会让线程的调用失去意义,线程并没有并发执行) #include <iostream> #include <th 阅读全文
posted @ 2021-02-04 20:02 邶风 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 代码结构比较复杂的情况下,手动加锁,解锁,可能会有所遗漏。 这种情况下,推荐使用自解锁(自解锁在构造的时候lock,在析构的时候unlock)(对象在超出作用域时会执行析构) 自解锁,手动锁优缺点:自解锁每次都会构造,析构。在执行效率上没有手动锁效率高。 演示代码: 示例一:手动加锁,解锁(要在每个 阅读全文
posted @ 2021-02-04 19:56 邶风 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 不合理的设定临界区域,会让线程的调用失去意义。 代码一: #include <iostream> #include <thread> #include <mutex> using namespace std; mutex m_lock; void workFun(int index) { for ( 阅读全文
posted @ 2021-02-04 16:31 邶风 阅读(115) 评论(0) 推荐(0) 编辑
  2021年2月3日
摘要: 示例一: #include <iostream> #include <thread> using namespace std; void thread1() { for (int n = 0; n<4; n++) cout << "i am child thread" << endl; }//抢占式 阅读全文
posted @ 2021-02-03 20:47 邶风 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 在windows系统下可以使用“资源监视器”来查看网络活动详情。 在服务端代码中添加一个高精度计时器,统计每秒钟收到了多少个完整数据包。 c++11 chrono(高精度时钟,可达纳秒级别) 客户端: DataHeader.hpp #ifndef _MessageHeader_hpp_ #defin 阅读全文
posted @ 2021-02-03 20:02 邶风 阅读(89) 评论(0) 推荐(0) 编辑
  2021年1月31日
摘要: windows默认FD_SETSIZE大小为64,Linux的select默认只支持1024个句柄 在引入#include <WinSock2.h>之前,定义: #define FD_SETSIZE 1024 就能实现突破64个socket,使用1024是为了要实现代码可以跨平台。 客户端 :100 阅读全文
posted @ 2021-01-31 16:58 邶风 阅读(425) 评论(0) 推荐(0) 编辑
  2021年1月30日
摘要: 1.网络收发稳定性 2.windows使用select达到连接上限 服务端在执行select时SOCKET上限数量为FD_SETSIZE windows系统定义: #define FD_SETSIZE 64 typedef struct fd_set { u_int fd_count; /* how 阅读全文
posted @ 2021-01-30 17:58 邶风 阅读(141) 评论(0) 推荐(0) 编辑
  2021年1月29日
摘要: 客户端: DataHeader.hpp #ifndef _MessageHeader_hpp_ #define _MessageHeader_hpp_ enum CMD { CMD_LOGIN, CMD_LOGIN_RET, CMD_LOGOUT, CMD_LOGOUT_RET, CMD_NEW_U 阅读全文
posted @ 2021-01-29 20:48 邶风 阅读(77) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 26 下一页