封装IOCP-1:起式

如果直接通过API来使用完成端口(IOCP),太过烦琐,不若将之封装一下使之好看,形式统一。鄙人深信好的代码必然是好看的代码,虽则自己的代码不太好看,但重要的是俺尚有一颗追求好看代码的心。当然,干巴巴的封装好看未必好用,还应当锦上再添些小花。设计IOCP的用意之一,便是使程序既能够具有良好的伸缩性,又能够最大化的利用系统资源,因此,还应加上动态负载调控这一味料,使得程序能够依据不同的硬件和软件情况自我调整,这样才能够兼具上述两个优点。

 

要具有伸缩性,即要求程序能够根据当前硬件状况(通常是CPU个数)分配线程资源。

 

要具有动态调节负载功能,就需要知道系统当前资源使用情况,并根据这个资料来调节线程数量。比较简便的法子是获取进程对CPU的使用率,若进程占用过多的CPU,则表示需要再加些工作线程,因为系统内不只自己一个进程在跑,需要稍稍释放些CPU资源给别人使用,若进程占用的CPU较低,可以减少线程,释放些内存资源给系统。

 

这位看官要说了,IOCP不是能够根据当前工作状态分派线程么?还要你画蛇添足,加个动态负载调控劳什子做甚?

 

非也非也,IOCP虽能够在线程池内调配线程,但若每个线程要处理的任务繁重,耗时太入,以至IOCP在池内无线程可差遣时,动态负载调控就可派上用场了。一个能够利用全部资源的程序固然好,然而一个呆呆板板,不会变化的程序,却也无趣的紧。我等写程序,就如同秀才作文章,姑娘绣花般,须得务求尽善尽美,这才是身为程序员的王道。

 

也罢,闲言少叙,言归正传。 

你可能感兴趣的:(工作,api,任务)