moonczx1
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2006-05-22
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1747回复:11

多线程的问题

楼主#
更多 发布于:2004-09-22 19:59
Win32 程序,除了主线程,用CreateThread函数开了两个线程,一个用来接收DMA传输来的数据用Ddraw来实时显示,另一个用来监听串口,实践证明好象串口的线程会在系统图象显示一个小时后造成影响,使图象出现错误,两个线程该怎么协调一下,使它们互不干扰呢
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2004-09-22 21:19
如果没有全局变量的话,应该没有影响。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
s_6666_s_qd
驱动巨牛
驱动巨牛
  • 注册日期2004-08-14
  • 最后登录2006-07-11
  • 粉丝0
  • 关注0
  • 积分199分
  • 威望22点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-23 10:00
“会在系统图象显示一个小时后造成影响”。。

肯定是你在做图象显示时,有内存泄露问题。
FutureNow
驱动牛犊
驱动牛犊
  • 注册日期2003-06-18
  • 最后登录2007-07-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-23 10:49
分开来测试,分别只运行一个线程看有没有问题!没有问题再同时运行,看两个线程同时用到哪些变量,有可能在外部被改变! :cool:
有梦才有未来!梦是做出来的!继续做梦,努力工作,享受生活!
moonczx1
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2006-05-22
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-23 14:15
两个线程分别运行没有问题
图像显示内存泄漏会是怎么造成的呢
我的显示是用dma读取外部数据到内存,利用的是在应用程序里用F= new BYTE[3968*4],然后将指针f传递给驱动程序,读出dma传进来的数据到内存,这么做会有问题吗
应该怎样做才安全呢
moonczx1
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2006-05-22
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-23 14:16
而且两个线程没有用到共用的变量
s_6666_s_qd
驱动巨牛
驱动巨牛
  • 注册日期2004-08-14
  • 最后登录2006-07-11
  • 粉丝0
  • 关注0
  • 积分199分
  • 威望22点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-09-23 14:55
两个线程分别运行没有问题
图像显示内存泄漏会是怎么造成的呢
我的显示是用dma读取外部数据到内存,利用的是在应用程序里用F= new BYTE[3968*4],然后将指针f传递给驱动程序,读出dma传进来的数据到内存,这么做会有问题吗
应该怎样做才安全呢


你new之后有没有delete,不过我怀疑是你使用的位图句柄用完拉没有释放
moonczx1
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2006-05-22
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-23 19:58
我DMA进来的是数据采集卡进来的图象数据,实时采集实时显示,根本没有用到位图
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-01 22:29
你new了以后,delelte放在哪里呢?
A strong man can save himself. A great man can save another.
wheeler
驱动牛犊
驱动牛犊
  • 注册日期2001-10-23
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-02 05:04
我赞成s_6666_s_qd 的判断!很可能是内存泄漏
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-10 16:34
不要忽略你用到的任何一个指针!!!!
guard2002
驱动中牛
驱动中牛
  • 注册日期2002-05-21
  • 最后登录2017-03-07
  • 粉丝0
  • 关注0
  • 积分46分
  • 威望65点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2004-10-10 18:11
如果没有全局变量,或者内存泄漏,应该没有问题的。就象两个程序各自在跑一样
游客

返回顶部