| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1130 人关注过本帖
标题:请问,在VC++下线程问题,请教如何实现
只看楼主 加入收藏
maimaiti123
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-5-24
收藏
 问题点数:0 回复次数:7 
请问,在VC++下线程问题,请教如何实现

在VC++下,实现PC与另一外设之间的单线程通信.如果想在程序运行中设置时间等待,看外设是否有消息响应.则如何设置.如果用sleep(),将线程挂起一段时间,则若设置时间过长比如说6秒,则PC机看来则处于假死机状态.有没有办法使PC端看起来运行正常,而外设一端继续处理.直到那段设置的响应时间到.请问如何实现.谢谢

搜索更多相关主题的帖子: 线程 外设 响应时间 sleep 
2006-05-24 15:38
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

试用_beginthread函数启动一个线程运行你的等待消息响应和设置的函数


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-24 16:58
maimaiti123
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-5-24
收藏
得分:0 
你是说重新开一个线程,专门运行这个时间等待函数?原来PC机与外设的通信线程先暂时挂起.等暂停时间函数那线程运行完了,释放那线程.再重新启动原来PC与外设通信线程那线程.这样做的效果是在等待时间那刻PC机那端看来运行正常.外设也照常工作.等待暂停时间到(这时间主要是为了给外设处理时间用的).那么,如何开线程,如何释放线程.有如何释放那线程呢(会自动释放吗).请具体解释下,能做个列子程序看下最好.谢谢
2006-05-25 09:06
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

晕,你查msdn有例子的,简单来讲,就是定义一个线程执行函数,这个函数中执行你要执行的代码,函数执行完线程就自动释放,如果中途要结束线程的话就调用_endthread
void WorldThread(void * pvoid) //pvoid就是调用_beginthread时输入的某个结构的指针
{
......
if (想要结束)
_endthread
......
}

然后在主线程调用_beginthread(WorldThread, 0, (void *)(某个数据结构的指针));就行了
具体你看msdn吧


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-25 09:53
maimaiti123
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-5-24
收藏
得分:0 

我是菜鸟,还是没看明白.兄弟能不能写出来让我看下,应该不大的吧,程序.我主要是不大明白.
//主函数
{....

sleep(5500);//挂起PC与外设通信线程
_beginthread(参数不明白);
}


我还是对那个人的意图不是很明白,电脑会处于假死机状态吗?PC机运行的时候难道不是多线程运行的吗?当PC与外设通信这个线程挂起,其他PC上的线程还可以运行的啊.怎么PC机器会处于假死机状态呢

2006-05-25 10:43
maimaiti123
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-5-24
收藏
得分:0 
??,帅哥!!!
2006-05-25 11:09
maimaiti123
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-5-24
收藏
得分:0 

我是想在程序中设置一个时间等待,看操作处理是不是超时了.

还有,我对要求我改这程序的人意图还不是很明白.我在程序中用的是sleep(6000)这一函数.但他说等待时间过长会时PC机处于假死机状态.我想问下,PC机不是多线程运行的吗?当他与外设通信这一线程功过sleep()挂起来后,其他线程不是照样可以运行的吗?怎么会假死机状态.另外,他说是单线程.我不知道他说的单线程是什么意思?

有高手的,请指点一下,谢谢.
小弟菜鸟的很!

2006-05-25 11:18
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 
你应该有msdn吧,你可以查msdn,上面比我讲得详细,
改程序也是一种学习,我要是全帮你写了那对你也不好,你可以查msdn研究,很简单的

世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-25 11:40
快速回复:请问,在VC++下线程问题,请教如何实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023753 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved