易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux下通用线程池的创建与使用

Linux
下通用线程池的创建与使用

文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行
任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简
单。
 
为什么需要线程池
目前的大多数网络服务器,包括
Web
服务器、
Email
服务器以及数据库服务器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求,但处理时间却相对较短。
传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就是是

即时创建,即时销毁

的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态。
我们将传统方案中的线程执行过程分为三个过程:
T1

T2

T3

T1
:线程创建时间
T2
:线程执行时间,包括线程的同步等时间
T3
:线程销毁时间
那么我们可以看出,线程本身的开销所占的比例为
(T1+T3) / (T1+T2+T3)
。如果线程执行的时间很短的话,这比开销可能占到
20%-50%
左右。如果任务执行时间很频繁的话,这笔开销将是不可忽略的。
除此之外,线程池能够减少创建的线程个数。通常线程池所允许的并发线程是有上界的,如果同时需要并发的线程数超过上界,那么一部分线程将会等待。而传统方案中,如果同时请求数目为
2000
,那么最坏情况下,系统可能需要产生
2000
个线程。尽管这不是一个很大的数目,但是也有部分机器可能达不到这种要求。
因此线程池的出现正是着眼于减少线程池本身带来的开销。线程池采用预创建的技术,在应用程序启动之后,将立即
创建一定数量的线程
(N1)

放入空闲队列中。这些线程都是处于阻塞(
Suspended
)状态,不消耗
CPU
,但占用较小的内存空间。当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行。当
N1
个线程都在处理任务后,缓冲池自动创建一定数量的新线程,用于处理更多的任务。
在任务执行完毕后线程也不退出,而是继续保持在池中等待下一次的任务。
当系统比较空闲时,大部分线程都一直处于暂停状态,线程池自动销毁一部


相关文档:

Linux 安装 Mysql

 一、引言
  想使用Linux已经很长时间了,由于没有硬性任务一直也没有系统学习,近日由于工作需要必须使用Linux下的MySQL。本以为有
Windows下使用SQL
Server的经验,觉得在Linux下安装MySql应该是易如反掌的事,可在真正安装和使用MySQL时走了很多弯路,遇见很多问题,毕竟Linux
和Windows本身就有很大区别。为了让 ......

Linux 平台下 MYSQL安装 启动 mysql命令

MYSQL安装
//解压编译安装
# tar xzvf mysql-5.0.27.tar.gz
# cd mysql-5.0.27
# ./configure -prefix=/home/redadmin/mysql
# make
# make install
# cd /home/redadmin/mysql/
# cp share/mysql/my-medium.cnf ./
# mv my-medium.cnf my.cnf
// my.conf文件修改
# vi my.cnf
修改前:
port  &nb ......

用Linux下Perl脚本连接SQLServer

准备工作:
  用到的perl 扩展组件(modules)在上篇贴出.( win32::odbc 模块
)下载组件后按照Readme文件安装倒响应目录.配置好相应的odbc数据源.
  
  程序实现:
  使用
  use
Win32::ODBC;
  
  语句包含应使用的模块是win32::odbc,写出数据库
连接字符串
  
  $DSN = "DSN =
My DSN ......

浅析linux下键盘设备工作和注册流程

浅析linux下键盘设备工作和注册流程
【浅析linux下鼠标驱动的实现】
 input_init()=>
=>
class_register(&input_class);注册input类
input_proc_init();创建proc下的目录和文件
register_chrdev(INPUT_MAJOR, "input", &input_fops);注册驱动程序到cdev_map上,以待驱动设备.
drivers\input\keybo ......

查找linux系统中大文件的方法

可以用下面的命令查找到系统中哪一个文件夹有问题然后逐层查看就可以找到是哪一个文件了
命令是
首先切换到根目录
cd /
du -sh ./*
du -sh ./* | sort
然后找到最大的文件夹
逐层就可以找到是哪一个文件夹最大是否是有问题的
一般这样就可以确定目标文件是哪一个了 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号