Web网站
今朝一九九三
这个作者很懒,什么都没留下…
展开
-
Linux中线程同步:互斥锁/信号量/条件变量+无锁队列
基本概念互斥锁,条件变量,信号量 应用互斥锁POSIX线程锁机制的Linux实现都不是取消点,因此,延迟取消类型的线程不会因收到取消信号而离开加锁等待。值得注意的是,如果线程在加锁后解锁前被取消,锁将永远保持锁定状态,因此如果在关键区段内有取消点存在,或者设置了异步取消类型,则必须在退出回调函数中解锁。 这个锁机制同时也不是异步信号安全的,也就是说,不应该在信号处理过程中使用互斥锁,否则容易造成转载 2017-04-25 14:33:43 · 1536 阅读 · 0 评论 -
线程池和内存池的实现
为什么需要线程池?大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是”即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数转载 2017-04-26 13:29:31 · 2903 阅读 · 0 评论 -
Web网站架构的高并发实现
Web前端性能优化浏览器访问优化减少http请求http是无状态的应用层协议,意味着每次http请求都需要建立通信链路、进行数据传输,而在服务器端,每个http都需要启动独立的线程去处理。 减少http的主要手段是合并CSS、合并JavaScript、合并图片等,这样浏览器就只需要一次请求。使用浏览器缓存CSS、JavaScript、Logo等静态资源更新频率都比较低,而这些文件又几乎是每次htt转载 2017-08-11 17:09:52 · 1069 阅读 · 0 评论 -
用redis实现分布式锁
在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分的解决方案是基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。使用到的Redis命令SETNX命令(SET if Not eXists) 语法: SE转载 2017-09-23 20:46:38 · 687 阅读 · 0 评论 -
select和epoll的区别
select原理概述调用select时,会发生以下事情:从用户空间拷贝fd_set到内核空间;注册回调函数__pollwait; 遍历所有fd,对全部指定设备做一次poll(这里的poll是一个文件操作,它有两个参数,一个是文件fd本身,一个是当设备尚未就绪时调用的回调函数__pollwait,这个函数把设备自己特有的等待队列传给内核,让内核把当前的进程挂载到其中); 当设备就绪时,设备就会转载 2017-04-23 12:00:17 · 423 阅读 · 0 评论