百分在线求助:一个关于线程的问题

librastar2001 2002-05-06 05:01:55
我用CWinthread建立了一个线程序,是关于串行口通讯的,大概是一个循环发送接受的线程,我有的时候需要暂停此线程然后去执行其他操作,但是当我暂停了线程以后,线程还占用了我的串口,我的其他程序无法对串口进行操作了,请问这个问题如何解决?

...全文
31 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaidy 2002-05-09
  • 打赏
  • 举报
回复
up
halcyon 2002-05-09
  • 打赏
  • 举报
回复
我的想法是不用SUSPENDTHREAD,而向该线程发送一个自定义消息,
线程受到消息后释放资源然后挂起自己
talkinsmile 2002-05-09
  • 打赏
  • 举报
回复
提个建议:
你的程序也许不止一个线程要占用串口资源,可以如下处理:
Thread A:
if(检查串口被占用==TRUE)
return 0;
...
占用串口;
释放串口;
return 0;


Thread B:
if(检查串口被占用==TRUE)
return 0;
...
占用串口;
释放串口;
return 0;
librastar2001 2002-05-06
  • 打赏
  • 举报
回复
static UINT AskCycThread(LPVOID pParam)
{
unsigned char i;
int Result;
while(TRUE)
{
for(i=0;i<8;i++)
{
///////////////////////////////////////////////////////////////
if(RunSystem[i]==0xFF)
{

CCOMM com;
Result=com.Run(i,1,¤tSystem);
}
////////////////////////////////////////////////////////////////


}
return 1;
}



我想这么做:线程在执行到
/////////////////////////////////
//////////////////////////////////
之间的的时候将不能够被挂起,直到跳出这段程序
请问我该如何做?(请具体一点)
southnan 2002-05-06
  • 打赏
  • 举报
回复
关注,我也想知道!

up
librastar2001 2002-05-06
  • 打赏
  • 举报
回复
急死啦。。。。

各位高手快来帮忙啊。。。

来者有分!
librastar2001 2002-05-06
  • 打赏
  • 举报
回复
如何释放啊?
能不能具体一点?
yongdu 2002-05-06
  • 打赏
  • 举报
回复
当然,你的线程没释放串口资源,别的进程当然不能访问了。
在你挂起线程前先释放,唤醒后再重新打开
librastar2001 2002-05-06
  • 打赏
  • 举报
回复
以下是我的线程的大略代码:

static UINT AskCycThread(LPVOID pParam)
{
unsigned char i;
int Result;
while(TRUE)
{
for(i=0;i<8;i++)
{
if(RunSystem[i]==0xFF)
{
CCOMM com;
Result=com.Run(i,1,¤tSystem);
}
}
return 1;
}
librastar2001 2002-05-06
  • 打赏
  • 举报
回复
我的线程大概如下:

static UINT AskCycThread(LPVOID pParam)
{
unsigned char i;
int Result;
while(TRUE)
{
for(i=0;i<8;i++)
{
if(RunSystem[i]==0xFF)
{
CCOMM com;
Result=com.Run(i,1,¤tSystem);
}
}
return 1;
}

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧