当前位置:  技术问答>linux和unix

做过多线程的请进!

    来源: 互联网  发布时间:2016-12-22

    本文导语:  有一个server,要处理很多http request(在处理之前已经将http request的内容存在一个buf中了) 那么现在我要对这个buf进行多线程处理。 (1)如何存储大量的http_request解析得到的内容,用什么数据结构存储大量http request解...

有一个server,要处理很多http request(在处理之前已经将http request的内容存在一个buf中了)
那么现在我要对这个buf进行多线程处理。
(1)如何存储大量的http_request解析得到的内容,用什么数据结构存储大量http request解析得到的内容,效率才能高?
还要考虑处理完一个删一个。
(2)这个多线程怎么做?只需要简单的调用多线程函数吗?有什么要注意的地方吗?我只写过简单的多线程...
(3)在处理过程中,要读取一些文件,这个IO过程可否提高效率?如何提高?
(3)线程安全方面,要使用内存中存储的一些数据,但这些数据只是在收到一个信号之后才会修改它,多线程处理的过程中不修改,这个要考虑线程安全吗?

谢谢!

|
使用队列。队列头部进行挂载数据,尾部就可以进行处理,处理完就删掉。

多线程操作队列:

可用互斥锁,将队列加锁。保证一个时间只有一个线程在对队列进行操作。

|
使用线程池技术和抽象线程模型。

线程池:
生成符合你需求的线程个数,比如5个线程,线程调用任务等待函数,等待任务队列中有任务的时候,触发6个线程中的一个线程,抓取这个任务,将任务执行。

抽象线程模型:
抽象的线程,对应多个物理线程。

|
其实这是个综合性的问题,包括 多线程处理模型、socket处理模型、线程间同步等。

建议可以参考下一些轻型的web服务器,例如httpd,goahead等的实现原理,重点看处理new socket的方式。


我个人的思路是:来一个new socket,开一个线程,处理完一个请求后,就close掉socket,这是处理短连接基本的思路。

具体采用什么样的模型取决于你应用的逻辑处理、。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux内核模块中,局部变量过多造成死机怎么解决啊?
  • 哪位仁兄做过多媒体,给我一点建议,答者有分!
  • linux使用自己编译动态库依赖头文件过多的问题
  • 打开文件数过多(too many open files)
  • linux下通过多播获取本机IP地址,不成功啊?
  • mysql连接过多和死掉以及拒绝服务的解决方法
  • 解决preg_match匹配过多字符长度的限制的思路分析
  • sql server占内存过多问题的解决方法
  • Oracle连接数过多释放机制
  • 100分给提示一下下面参数什么原因?Linux下MYSQL访问过多,谢谢
  • IIS6 w3wp.exe进程占用cpu和内存过多的解决方法
  • 服务器接受的链接过多,该怎么处理
  • sql中参数过多利用变量替换参数的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3