settimeoutsetblocking+select(了解select)继续昨天的干活,这次我使用select+setblocking和settimeout来做个对比,以次来证明。首先我设置socket为非阻塞的。然后使用select来监控套接字。#!/usr/bin/envpython#enc...
分类:
编程语言 时间:
2014-12-04 19:54:31
阅读次数:
303
1. 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。(阻塞)2. 同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可以立即返回,但是并不保证I/O操作成功。(立即返回)3. 异步事件阻塞I/O: 用户进程可以对I/O事件进行阻塞,但是...
分类:
其他好文 时间:
2014-12-03 22:52:31
阅读次数:
146
从两个方面说下这个问题:1.不让访问网络的原因2.解决该问题的办法不让访问网络的原因:由于对于网络状况的不可预见性,很有可能在网络访问的时候造成阻塞,那么这样一来我们的主线程UI线程就会出现假死的现象,产生很不好的用户体验。所以,默认的情况下如果直接在主线程中访问就报出了这个异常,名字是Networ...
分类:
移动开发 时间:
2014-12-03 12:06:27
阅读次数:
173
看了篇文章,觉得分析得很透彻,其后总结的很到位,地址:http://www.iteye.com/topic/1083832把获取与释放操作串在一起在简单看一下:获取锁的时候将当前线程放入同步队列,并且将前一个节点的状态置为signal状态,然后阻塞当这个节点的前一个节点成功获取到锁,前一个节点就成了...
分类:
其他好文 时间:
2014-12-03 10:29:28
阅读次数:
195
Semaphore 是一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore只对可用许可的号码进行计数,并采取相应...
分类:
编程语言 时间:
2014-12-03 00:11:06
阅读次数:
239
在Set中有一个排序的集合SortedSet,用来保存按照自然顺序排列的对象。Queue中同样引入了一个支持排序的FIFO模型。并发队列与Queue简介中介绍了,PriorityQueue和PriorityBlockingQueue就是支持排序的Queue。显然一个支持阻塞的排序Queue要比一个非...
分类:
编程语言 时间:
2014-12-03 00:07:36
阅读次数:
212
线程池任务执行结果这一节来探讨下线程池中任务执行的结果以及如何阻塞线程、取消任务等等。1packageinfo.imxylz.study.concurrency.future;23publicclassSleepForResultDemoimplementsRunnable {45staticboo...
分类:
编程语言 时间:
2014-12-03 00:01:56
阅读次数:
584
在上一节中详细分析了LinkedBlockingQueue的实现原理。实现一个可扩展的队列通常有两种方式:一种方式就像LinkedBlockingQueue一样使用链表,也就是每一个元素带有下一个元素的引用,这样的队列原生就是可扩展的;另外一种就是通过数组实现,一旦队列的大小达到数组的容量的时候就将...
分类:
编程语言 时间:
2014-12-03 00:01:43
阅读次数:
488
在《并发容器 part 4 并发队列与Queue简介》节中的类图中可以看到,对于Queue来说,BlockingQueue是主要的线程安全版本。这是一个可阻塞的版本,也就是允许添加/删除元素被阻塞,直到成功为止。BlockingQueue相对于Queue而言增加了两个操作:put/take。下面是一...
分类:
编程语言 时间:
2014-12-02 23:54:50
阅读次数:
296
这个小节介绍Queue的最后一个工具,也是最强大的一个工具。从名称上就可以看到此工具的特点:双向并发阻塞队列。所谓双向是指可以从队列的头和尾同时操作,并发只是线程安全的实现,阻塞允许在入队出队不满足条件时挂起线程,这里说的队列是指支持FIFO/FILO实现的链表。首先看下LinkedBlocking...
分类:
编程语言 时间:
2014-12-02 23:49:50
阅读次数:
208