多线程处理

     由于最近再处理一些图像的算法中涉及到效率和速度问题,改进了半天发现貌似不好搞了。。于是空了的时候随便到处看看,发现了多线

 

程可能会有点作用。。以前虽然学习过,但基本都是书上的例子那种方式运行。。。MAIN THREAD RUN....SUBTHREAD RUN....交替的RUN,就根本没有真实的使用过,如是就在网上搜了些资料,以供自己随时学习记录。。

 

A、我首先得搞清楚多线程的作用和应用场合。

我只知道多线程其目的是提高CPU的利用率,但这句话就太大了。。不够通俗。。在网上找了一些人的见解,个人认为貌似是正确的:

有件事情需要不停地做的时候就用多线程,例如不停地检测串口是否收到东西;  

 

 1.你在什么情况下使用多线程,怎么利用多线程带来的优势  
   
  为防止计算量较大的程序运行时,界面停止响应,可以使用多线程。利用多线程平均分配CPU时间片的特性,可以实现多个任务同时进行。  
   
  2.你在使用多线程时都遇到什么问题,怎么解决  
   
  使用多线程可能遇到最普遍的问题,就是多线程运算、取值的时候,多个线程如果同时存取同一内存单元的内容,可能导致运行结果千差万别。解决的方法是使用多线程同步机制,建立临界区、设定互斥量,最终目的还是为了保持多个线程之间相互配合,相互等待,达到运行一致的效果。

 

 

 

1.通常在I/O处理的时候使用多线程,例如串口操作,读写文件,socket   I/O等。  
      或者在需要在后台处理的事务。  
  2.同步问题是经常遇到的,关键还是在设计数据的时候要考虑到可能出现的同步问题,用同步对象来处理。  
  3.多线程调试问题,关键还是要分清处理哪个线程,通常使用线程的id来区分。

 

 

1.服务端响应多客户端的应用就应该使用多线程,这样可以提高响应的速度,充分利用资源  
  2.现成同步问题,调试问题,采用互锁,信号量解决之  
  3.调试麻烦  

从线程A需要中止其他线程的时候,退出时资源清理很容易出问题。  
  采取的办法是,尽量不用terminatethread,使用setevent,   postmessage等方法  
  通知要中止的线程自己exitthread.

 

对纯粹的cpu计算问题(单cpu)使用多线程反而会降低效率。  
  一般都是io方面使用多线程,  
  但是一个系统压力不大时使用多线程也是浪费,线程间切换也需要耗费计算能力的!  
  总之避免简单的事情复杂化!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值