主题 : linux2.6.29+qtopia2.2.0 如何实现多线程编程呢? 复制链接 | 浏览器收藏 | 打印
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
10楼  发表于: 2009-07-01 10:08
引用第9楼26672624于2009-06-30 19:02发表的  :
加了也没用,Qt/Embedded 2.0的多线程对Qtopia是无效的

哦是吗?能否为大家解释一下?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
Linux@ARM
级别: 新手上路
UID: 2478
精华: 0
发帖: 48
金钱: 410 两
威望: 354 点
贡献值: 0 点
综合积分: 96 分
注册时间: 2008-11-19
最后登录: 2018-02-08
11楼  发表于: 2009-07-01 10:27
哦!谦虚点……
学习……
欢迎访问Linux@ARM博客:
http://l0p0c.cublog.cn
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
贡献值: 21 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
12楼  发表于: 2009-07-01 13:42
引用第10楼kasim于2009-07-01 10:08发表的  :

哦是吗?能否为大家解释一下?


Qt之初是为PC Linux的X11, MacOS等系统设计的,后来才发展了嵌入式版本,在配置上依然保留了统一的配置选项,如果你加了多线程库的支持选项,可能无法编译通过,也可能会对整个系统造成影响。
Qtopia自带的视频播放器的多线程使用的是Linux系统本身的,而不是Qt的。Qtopia编程可以基于事件驱动,不清楚很多初学者为何钟情于多线程。对于大多数的程序,如果不是十分擅长编程,特别是Qtopia编程,尽量不要使用多线程,它将到处布满陷阱,到时出了问题也很难debug,因为多线程的错误很多都是没有规律性的。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
13楼  发表于: 2009-07-01 15:44
引用第12楼26672624于2009-07-01 13:42发表的  :


Qt之初是为PC Linux的X11, MacOS等系统设计的,后来才发展了嵌入式版本,在配置上依然保留了统一的配置选项,如果你加了多线程库的支持选项,可能无法编译通过,也可能会对整个系统造成影响。
Qtopia自带的视频播放器的多线程使用的是Linux系统本身的,而不是Qt的。Qtopia编程可以基于事件驱动,不清楚很多初学者为何钟情于多线程。对于大多数的程序,如果不是十分擅长编程,特别是Qtopia编程,尽量不要使用多线程,它将到处布满陷阱,到时出了问题也很难debug,因为多线程的错误很多都是没有规律性的。

事实上,QT Embedded中的QThread class在Linux/Unix就是通过pthread(POSIX Thread)实现的,看看qtopia-2.2.0源代码中的qthread_p.h和qthread_unix.cpp就知道了。QThread只是包装了pthread的API更方便用户使用而已。对于熟悉thread编程的开发者来说,QThread不失为QT提供的一个很方便的工具。
至于thread编程容易引起一些比较难debug的问题,这一点我同意,这主要是由多线程调度引起的。要解决这些问题,开发者必须熟悉线程/进程调度(在Linux上,pthread就是一个独立的进程)以及与调度相关的一些基本工具,比如信号量,mutex等的基本概念。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 6261
精华: 0
发帖: 13
金钱: 130 两
威望: 130 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2009-05-25
最后登录: 2010-07-27
14楼  发表于: 2009-07-04 14:45
呵呵,我的多线程已经实现了,用了linux自带的多线程编程。
谢谢大家,学了不少东西,呵呵!
其实我要实现的是按键信号采集与信号处理,已经实现,:—)
级别: 新手上路
UID: 8007
精华: 0
发帖: 9
金钱: 60 两
威望: 26 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2009-08-06
最后登录: 2013-08-24
15楼  发表于: 2009-08-06 17:04
www.wkmcu.com 吾酷嵌入式论坛 迷你2440,micro2440平台 下的内核分析,驱动详解,busybox下的软件编译。
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
16楼  发表于: 2009-12-22 22:00
引用第9楼26672624于2009-06-30 19:02发表的  :
加了也没用,Qt/Embedded 2.0的多线程对Qtopia是无效的

同意楼主的说法.

因此小弟在进行多线程编程时,也是用Linux的pthread而非Qt的Qthread.
為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫 
级别: 新手上路
UID: 13508
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2010-01-25
最后登录: 2010-11-28
17楼  发表于: 2010-02-01 13:00

 回 8楼(kasim) 的帖子

高手,怎么“这可以通过在qte的配置上加上'-thread'参数做到”做才能有效果,能够在详细点吗?谢谢了,我这个问题纠结了很久。谢谢了
级别: 新手上路
UID: 13508
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2010-01-25
最后登录: 2010-11-28
18楼  发表于: 2010-02-01 13:01

 回 14楼(rainy0415) 的帖子

能够详细点吗?谢谢了
Eddy Lau (Sun Boy)
级别: 圣骑士
UID: 11202
精华: 1
发帖: 364
金钱: 1885 两
威望: 380 点
贡献值: 1 点
综合积分: 748 分
注册时间: 2009-11-30
最后登录: 2010-04-12
19楼  发表于: 2010-02-01 16:54

 Re:回 14楼(rainy0415) 的帖子

引用第18楼liangruisan于2010-02-01 13:01发表的 回 14楼(rainy0415) 的帖子 :
能够详细点吗?谢谢了

Please refer to the conversations of the following link:

http://aiothome.net/read.php?tid-4027.html

為什麼生世間上 此間許多哀與傷 為什麼爭鬥不絕 歡欣不永享 
問為何人存隔膜 顏面無真相 問那天可找得到 理想中的烏托幫