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

pthread很影响速度,为什么?着急呀....

    来源: 互联网  发布时间:2015-09-24

    本文导语:  我用pthread_create创建1个线程,线程里面的代码是while (1) { nRead = read(ttyS0... ), if (nRead > 0) ...},read 从串口读数据,已经设置为非阻塞,其他属性都用默认,if 从未进去过,就这样的循环就使主线程变的很慢,为什么?怎...

我用pthread_create创建1个线程,线程里面的代码是while (1) { nRead = read(ttyS0... ), if (nRead > 0) ...},read 从串口读数据,已经设置为非阻塞,其他属性都用默认,if 从未进去过,就这样的循环就使主线程变的很慢,为什么?怎么解决??????

|
设置为阻塞就好了

|
设置为非阻塞会马上返回,所以占用CPU多,就使主线程变的很慢。

|
设计为非阻塞,中间用select停顿一下

|
用select设置检测是否可读
然后再read


|
但设为阻塞会把主线程都给挂起? 你应该用异步的方法来实现线程间通信。

|
select

poll

|
同意楼上,但你的if从未进去过?是不是该检查一下是否有输入呢?你可以调试进入看看就知道了

|
都用多线程了,,还设为不阻塞,不是自己找麻烦吗??
在新线程时读取,有数据时向主线程发个信号量或或者事件就可以同步了啊。

|
线程不停的做read动作(不成功)
占用大量CPU时间
速度当然慢了
既然是在子线程中
设成阻塞超时比较好
如果在qt下的话
qthread类中有msleep
可以用qthread不阻塞+msleep

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);和pthread_detach(pthread_self()); 有区别吗。怎么我执行的效果不一样
  • pthread_attr_init()及pthread_cond_wait使用疑惑
  • pthread_cond_signal和pthread_cond_wait两个函数是怎么意思?
  • 包含了#include <pthread.h>,为什么还有pthread_create错误?
  • 先pthread_cancel()再pthread_join(),主线程退出?
  • 请问pthread_mutex_lock()和pthread_mutex_unlock()可不可以用于对不同进程的线程进行同步。
  • 请问一下红色字体处的区别,及pthread_self()和pthread_creat()函数第一个参数的区别?
  • pthread_cond_wait 之前的 pthread_mutex_lock 语句 有什么作用,可以不用吗?
  • pthread_cancel和pthread_cond_wait
  • pthread_cond_t和pthread_mutex_t的疑问?
  • pthread_cond_t进入等待状态,则pthread_mutex_t无效...
  • LINUX关于pthread_create 和pthread_join
  • Pthread
  • pthread_create成功返回,但pthread_kill(thrdid, 0)返回说进程不存在?
  • 问一个关于pthread线程删除(取消)的问题
  • pthread 阻塞问题
  • pthread_cond_timedwait用来让线程睡眠无效?
  • pthread_cond_timedwait用法
  • 关于线程pthread.h
  • linux下运行pthread库出错的问题


  • 站内导航:


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

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

    浙ICP备11055608号-3