http1.0短连接每一个请求建立一个TCP连接,请求完成后立马断开连接。这将会导致2个问题:连接无法复用,headoflineblocking连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。headoflineblocking会导致带宽无法被充分利用,以及后续健康请求被阻塞。</br>http1.1为解决HTTP1
分类:
Web程序 时间:
2018-03-05 18:10:50
阅读次数:
549
当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么他永远被阻塞,当线程A持有锁L并想获得锁M的同时,线程B持有锁M并同时尝试获得锁L时,那么两个线程将永远的等待下去,这中情况就是简单的死锁的形式,其中多个线程由于存在环路的锁依赖关系而永远的等待下去,那么就存在一个死锁。 1、锁顺序死锁 ...
分类:
编程语言 时间:
2018-03-04 16:03:27
阅读次数:
242
1、非阻塞I/O 对低速设备的I/O操作可能会使进程永久阻塞,这类系统调用主要有如下情况:(1)如果数据并不存在,则读文件可能会使调用者永远阻塞(例如读管道、终端设备和网络设备)。(2)如果数据不能立即被接受,则写这些同样的文件也会使调用者永远阻塞;(3)在某些条件发生之前,打开文件会被阻塞(例如以 ...
分类:
其他好文 时间:
2018-02-24 16:57:59
阅读次数:
189
阻塞模型 这种方式最为大家熟悉,Socket默认的就是阻塞模式。 在recv的时候,Socket会阻塞在那里,直到连接上有数据可读,把数据读到buffer里后recv函数才会返回,不然就会一直阻塞在那里。 如果在主线程中被阻塞,而数据迟迟没有过来,那么程序就会被锁死。这样的问题可以用多线程解决,但是 ...
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是 CyclicBarri ...
分类:
编程语言 时间:
2018-02-18 15:38:41
阅读次数:
192
/** * This is a very very helpful category for NSTimer. * * @author huangyibiao * @email huangyibiao520@163.com * @github https://github.com/632840804 ...
分类:
其他好文 时间:
2018-02-14 19:41:40
阅读次数:
187
阻塞IO 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来。 而在用户进程这边,整个进程会被阻塞。当kernel ...
分类:
其他好文 时间:
2018-02-10 16:59:25
阅读次数:
167
一、BLOCK 循环引用 一般表现为,某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身。构成循环引用。 // 定义 block 的时候,会对外部变量做一次 copy,强引用, self自身为强引用。 解决方案如下: 二、计时器NSTimer循环引用 主要是因为从 ...
分类:
移动开发 时间:
2018-02-07 19:50:28
阅读次数:
238
需要给连接代码追加一个超时设置,即通过以下设置代码追加一个超时期限: conn.setConnectTimeout(3000); 这时,我们设置为超时时间为3秒,如果3秒内不能连接就被认为是有错误发生,从而有效地避免了网址不同阻塞的问题。并且,这个时间只是指建立socket的时间,而并不是指发送数据 ...
分类:
Web程序 时间:
2018-02-04 19:39:35
阅读次数:
1528
阻塞状态(Blocked) 线程运行过程中,可能由于各种原因进入阻塞状态: 1>线程通过调用sleep方法进入睡眠状态; 2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者; 3>线程试图得到一个锁,而该锁正被其他线程持有; 4>线程在等待某个触发条件; .. ...
分类:
编程语言 时间:
2018-01-23 20:32:59
阅读次数:
153