我之前的实现方式都是使用非阻塞的socket ?, 其实对于阻塞的socket 有另外一种实现方式,那就是使用?alarm(闹钟) ?, 进入连接前设置设置个超时 voidset_timeout(int?n)
{
to?=?0;
alarm(n);
signal(SIGAL...
分类:
系统相关 时间:
2014-10-24 16:55:07
阅读次数:
283
本文我们来实现回射服务器的Buffer。 Buffer的实现 上节提到了非阻塞IO必须具备Buffer。再次将Buffer的设计描述一下: 这里必须补充一点,writeIndex指向空闲空间的第一个位置。 这里有三个重要的不变式: 1. 0 #define BUFFER_SIZE 1024 type...
分类:
系统相关 时间:
2014-10-24 16:24:21
阅读次数:
340
Interrupt a Quartz job that doing IO如果你想中断正在执行IO的 Quartz 作业,在你使用InterruptibleChannel时这是可行的。引用一下Oracle链接:实现了这个接口的通道,是可中断的:如果一个线程在一个中断通道阻塞I/O操作,另一个线程能调用...
分类:
其他好文 时间:
2014-10-24 15:52:17
阅读次数:
350
JedisPoolConfigconfig=newJedisPoolConfig();//连接耗尽时是否阻塞,false报异常,ture阻塞直到超时,默认trueconfig.setBlockWhenExhausted(true);//设置的逐出策略类名,默认DefaultEvictionPolic...
分类:
其他好文 时间:
2014-10-24 14:33:39
阅读次数:
203
因为项目需要,需要以5s为周期,收集广播信息,所以就要用到定时器和recvfrom函数,而在实用的过程中发现,5s到了,而程序仍然处于阻塞状态,一直纠结了好久,才找到问题所在,在此mark一下,以备后期回顾。 归根结底,原因在于使用的signal()函数:signal()是重启函数,超时以后会...
分类:
其他好文 时间:
2014-10-24 12:50:37
阅读次数:
265
当谈及 Lock-Free 编程时,我们常将其概念与 Mutex 或 Lock 联系在一起,描述要在编程中尽量少使用这些锁结构,降低线程间互相阻塞的机会,以提高应用程序的性能。类同的概念还有 "Lockless" 和 "Non-Blocking" 等。实际上,这样的描述只涵盖了 Lock-Free ...
分类:
其他好文 时间:
2014-10-24 09:15:55
阅读次数:
251
FutureTask类是Future 的一个实现,并实现了Runnable,
所以可通过Executor(线程池)来执行,也可传递给Thread对象执行。
如果在主线程中需要执行比较耗时的操作时,但又不想阻塞主线程时,
可以把这些作业交给Future对象在后台完成,当主线程将来需要时,
就可以通过Future对象获得后台作业的计算结果或者执行状态。
Executor框架利用Futur...
分类:
其他好文 时间:
2014-10-23 20:51:21
阅读次数:
192
9.3 Tempdb的并发阻塞
在介绍Tempdb的并发问题前,先介绍几个比较特殊的数据页。
PFS(Page Free Space),用于标识数据页空间的使用情况,以字节标识,可以表示数据页使用百分比,例如使用百分五十,百分八十,百分九十五以及完全被使用,同时,还有一个字节位表示数据页的类型,例如...
分类:
数据库 时间:
2014-10-23 12:14:28
阅读次数:
274
非阻塞IO是相对于传统的阻塞IO而言的。 我们首先需要搞清楚,什么是阻塞IO。APUE指出,系统调用分为两类,低速系统调用和其他,其中低速系统调用是可能会使进程永远阻塞的一类系统调用。但是与磁盘IO有关的系统调用是个例外。 我们以read和write为例,read函数读取stdin,如果是阻塞IO,...
分类:
系统相关 时间:
2014-10-23 12:11:41
阅读次数:
259
在对当前的运行的进程进行阻塞时经常会用到wait_event()这个函数,来看看linux内核中时如何实现wait_event()这个函数的。先介绍几个宏定义函数:1.#defineDEFINE_WAIT_FUNC(name,function)\wait_queue_tname={\.private=current,\.func=function,\.task_list=LIST_HEAD_INIT((n..
分类:
其他好文 时间:
2014-10-23 06:55:07
阅读次数:
222