[置顶] 文章列表(目录)

摘要: 文章列表(目录) 阅读全文

posted @ 2014-03-16 17:43 magicsoar 阅读(1129) 评论(0) 推荐(0) 编辑

2018年4月9日

网络IO超时的几种实现

一、select/poll/epoll

int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset,struct timeval *timeout);

timeout为等待的指定时间,当有描述符符合条件  或是  超过超时时间的话,函数返回,可以利用timeout完成超时的判断

 

int poll ( struct pollfd * fds, unsigned int nfds, int timeout);

timeout为等待的指定时间,当有描述符符合条件  或是  超过超时时间的话,函数返回,可以利用timeout完成超时的判断

 

int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);

timeout为等待的指定时间,当有描述符符合条件  或是  超过超时时间的话,函数返回,可以利用timeout完成超时的判断

示例 使用epoll时的nginx

NewImage

timer为最早一个超时的事件的超时值,或为一个默认值

NewImage

 

二、libcurl库提供的超时配置

curl_easy_setopt(xxx, CURLOPT_CONNECTTIMEOUT_MS, yyy);尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待。
curl_easy_setopt(xxx, CURLOPT_TIMEOUT_MS,yyy);   设置cURL允许执行的最长毫秒数

 

 

三、alarm/setitimer

通过指定间隔时间发出SIGALRM信号,在检查是否有时间超时

示例:

nginx定时器

NewImage

nginx提供了利用settimer每隔一段时间 唤起epoll_wait,在检查是否有时间超时的方式,避免了频繁调用gettimeofday的系统函数

 

 

四、利用recv/send提供的超时参数配置

setsockopt 可以对socket句柄设置各种参数,其中包括了SO_SNDTIMEO, SO_RCVTIMEO两个选择,他们可以控制使用recv, send时候的超时时间,但该参数不是对所有的系统都生效的

 

posted @ 2018-04-09 14:08 magicsoar 阅读(2573) 评论(0) 推荐(0) 编辑

2018年2月4日

Mysql Innodb 锁机制

摘要: Innodb中的锁类型,常见的insert,delete,update如何加锁,update会死锁,3个insert可以死锁?3个delete也会死锁? 阅读全文

posted @ 2018-02-04 22:24 magicsoar 阅读(708) 评论(0) 推荐(0) 编辑

2018年1月1日

HHVM源码剖析

摘要: hhvm源码中充满了很多C++11的新特性,并且使用了各种设计模式如工厂,模板方法等,利用智能指针包裹指针,让delete没有肆意的出现;模板,继承,explicit,纯虚函数的出现令代码中充满了惊喜 阅读全文

posted @ 2018-01-01 19:59 magicsoar 阅读(1332) 评论(0) 推荐(0) 编辑

2017年11月25日

又见区块链

摘要: 介绍了区块链,智能合约的基本知识 阅读全文

posted @ 2017-11-25 20:06 magicsoar 阅读(1066) 评论(1) 推荐(2) 编辑

2017年10月12日

Nginx平滑升级源码分析

摘要: nginx可以在不停止服务的情况下,升级更新自己的bin文件,那这些是怎么实现的呢,让我们看一下nginx的源码 阅读全文

posted @ 2017-10-12 23:33 magicsoar 阅读(2107) 评论(1) 推荐(1) 编辑

2017年7月26日

mysql复制

摘要: 介绍了mysql复制的一些知识 阅读全文

posted @ 2017-07-26 19:09 magicsoar 阅读(1854) 评论(0) 推荐(0) 编辑

2017年6月13日

C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言

摘要: 讲解了go语言和C语言交互的方法,包括go语言如何调用C语言;C语言如何调用go语言;C语言如何调用go语言,go语言中有调用了C语言 阅读全文

posted @ 2017-06-13 17:30 magicsoar 阅读(15746) 评论(0) 推荐(0) 编辑

2017年5月9日

openresty源码剖析——lua代码的执行

摘要: 上一篇文章中我们讨论了openresty如何加载lua代码,那么加载完成之后的lua代码又是如何执行的呢? 阅读全文

posted @ 2017-05-09 19:15 magicsoar 阅读(4925) 评论(1) 推荐(1) 编辑

2017年4月27日

openresty源码剖析——lua代码的加载

摘要: OpenResty作为一个基于 Nginx 与 Lua 的高性能 Web 平台,是如何加载lua代码,并实现lua代码的缓存呢?读完本文你会对此有一个大致的了解 阅读全文

posted @ 2017-04-27 16:24 magicsoar 阅读(3427) 评论(0) 推荐(0) 编辑

2017年4月6日

动态规划(dynamic programming)

摘要: 介绍了动态规划的基本知识,动态规划与其他算法的比较,以及如何建立子问题和状态转移方程 阅读全文

posted @ 2017-04-06 21:17 magicsoar 阅读(4081) 评论(0) 推荐(3) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示