摘要: 異步IO中也有高效低效之分,但主要還是要看具體的應(yīng)用到底需要什么樣機(jī)制。比如大家熟知的select就是個(gè)非常通用且跨平臺(tái)的方法,由于select中需要把大量的時(shí)間花在維護(hù)IO句柄上,導(dǎo)致其效率大打折扣,一般來(lái)說(shuō),對(duì)于小并發(fā)的異步IO操作,比如普通的客戶端或者是小并發(fā)量的服務(wù)器,它的效率可能也足夠了。關(guān)于select的效率問(wèn)題其實(shí)從各平臺(tái)上對(duì)于FD_SETSIZE的定義就能看出一些來(lái),在windows平臺(tái)上,F(xiàn)D_SETSIZE是64,在Linux平臺(tái)上是1024,也就是說(shuō),對(duì)于平臺(tái)提供商來(lái)說(shuō)也不指望他們提供的select能給你多大的并發(fā)吞吐能力。
閱讀全文
摘要: 所謂的同步和異步,在這里指的是應(yīng)用程序和內(nèi)核之間的交互方式。如果應(yīng)用程序不需要等待內(nèi)核的回應(yīng),那么它就是異步的。如果應(yīng)用程序提交完IO請(qǐng)求后,需要等待“回執(zhí)”,那么它就是同步的。而阻塞和非阻塞,指的是應(yīng)用程序是否等待IO操作的完成。如果應(yīng)用程序必須等到IO操作實(shí)際完成以后再執(zhí)行下面的操作,那么它是阻塞的。反之,如果不等待IO操作的完成就開(kāi)始執(zhí)行其它操作,那么它是非阻塞的。
閱讀全文