【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了...
分类:
系统相关 时间:
2014-07-25 14:10:01
阅读次数:
387
1.传统的socket: 阻塞式通信模式 tcp连接: 与服务器连接时 .必须等到连接成功后 才返回 .
udp连接: 客户端发送数据 ,必须等到发送成功后返回 .
每建立一个 Scoket连接时, 同事创建一个新线程对该 Socket进行单独通信(采用阻塞式通信 )
这种方式具有很高的响应速度,并且控制起来也很简单,在连接数较少的时候非常有效,但是如果
对每一个连接都产生一个线程的无疑...
分类:
其他好文 时间:
2014-07-24 23:31:17
阅读次数:
598
1. 什么是ANR? ANR(Application Not Responding)即应用程序无响应。 2. ANR产生的原因是什么? ANR产生的根本原因是APP阻塞了UI线程。在android系统中每个App只有一个UI线程,是在App创建时默认生成的,UI线程默认初始化了一个消息循环来处理UI...
分类:
其他好文 时间:
2014-07-24 22:51:43
阅读次数:
1406
高性能的网络服务器需要同时并发处理大量的客户端,而采用以前的那种对每个连接使用一个分开的线程或进程方法效率不高,因为处理大量客户端的时候,资源的使用及进程上下文的切换将会影响服务器的性能。一个可替代的方法是在一个单一的线程中使用非阻塞的I/O(non-blocking I/O)。 这篇文章主要介绍l...
分类:
其他好文 时间:
2014-07-24 22:45:13
阅读次数:
292
由于项目需要,用python django写restful接口遇到瓶颈,python django+uwsgi处理请求是会阻塞的,如果阻塞请求不及时处理,会卡住越来越多的其它的请求,导致越来越多的502。所以将请求处理频繁的,会阻塞长时间的接口用lua实现,lua放在nginx里跑,还是很快的。.....
分类:
其他好文 时间:
2014-07-24 09:58:33
阅读次数:
716
线程池中的死锁情况
这次死锁发生在什么情况下呢?在最开始写线程池的时候,我设计了线程是可重用的,主要是通过Event信号实现,通过在每个线程核心工作代码执行完毕后会将自己归还到池中,然后等待Event信号。主线程会以循环超时阻塞的方式监视一个任务队列,当发现有任务时便会从线程池中取出一个线程,并设置它的任务和目标函数,然后去start或者resume,resume就是会设置Event信号让线程不再阻塞,这里,从池中取线程的方法_get和归还线程方法returnThread都已经加锁,_get和return...
分类:
编程语言 时间:
2014-07-23 17:15:01
阅读次数:
333
Darwin Streaming Server 是一个开放源代码的streaming server,对于streaming server的编程和软件结构有着一定的参考价值,它是使用C++写的,其中的并发模式的核心就是Task类,下面写一下我的理解:多任务的程序常常采用线程+同步阻塞IO的模式, 每个...
python 中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。1. 阻塞模式导致数据污染importQueueq =Queue.Queue(10)foriinrange(10): myData = 'A' q.put(my...
分类:
编程语言 时间:
2014-07-23 14:58:36
阅读次数:
362
Linux主要的子系统主要有CPU、Memory、IO、Network。
在这些子系统中,它们之间相互之间高度依赖。任何一个子系统的高负载都会引起其他子系统出现问题。
例如:
大量的页调入请求对内存造成阻塞
网卡的大吞吐量造成CPU开销
CPU开销造成内存请求队列
大量从内存来的磁盘写请求造成CPU和IO通道的开销
而为了优化系统,我们必须定位瓶颈在哪。即使问题看起来像是某个子系统引...
分类:
系统相关 时间:
2014-07-23 13:14:16
阅读次数:
247
I/O模型:
1. 阻塞式I/O模型
2. 非阻塞式I/O模型:使用fcntl将套接字设置成非阻塞;然后轮询读取数据,这样会耗费大量CPU时间;
3. I/O复用模型:阻塞在select上;
4. 信号驱动式I/O模型:
5. 异步I/O模型:aio_read,信号直到数据已复制到应用进程缓冲区才产生
select:
select的最后一个时间参数:
1. ...
分类:
其他好文 时间:
2014-07-23 13:06:46
阅读次数:
202