Tread编程求助

hehemouse 2000-02-26 07:46:00
加精
本人第一次编Thread的程序,有些问题请教各位:

1. 我想创建一个Browser的Thread,它的作用是
对给定的URL,在窗口中对这个页面进行浏览,选其中某一部分
和确定已经完成对该站点的操作。

以上三个操作是通过某些菜单完成的。

2. 这个Browser的线程可能在主程序中被多次调用,但是每次只能
调用一个这样的线程。
也就是说只有当第一Browser做完以后才可以做第二个Browser
第二个做完以后才可以做第三个

我也有一些方法可以完成上述功能,但是感觉比较傻

对第一个问题,比如Browser里做一个while(1)的循环,读一个值,当这个值
不同的时候进行不同的操作。而这个值的改变是在主程序中
利用不同菜单的操作完成的。

有没有更好,或者说是更规范的方法来解决上述两个问题?

最好能比较详细一点,谢谢
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Firing_Sky 2000-02-27
  • 打赏
  • 举报
回复
临界区的操作,看看《操作系统》相关的书吧,这种临界区的操作很多VC的书上都讲了
hehemouse 2000-02-27
  • 打赏
  • 举报
回复
对于第一个问题能不能详细一点?
因为我对Thread很不熟,非常感谢
netmare 2000-02-27
  • 打赏
  • 举报
回复
创建你自己的CWinThread派生类CXXXThread,在其InitInstance中加入进入临界区
的代码,在其ExitInstance中加入离开临界区的代码,在其MESSAGE_MAP中加入
ON_MESSAGE(WM_USER1, OnUser1)
ON_MESSAGE(WM_USER2, OnUser2)
...
其中的WM_USER1,WM_USER2是你自定义的消息,用来表示不同的操作.
在CXXXThread::OnUser1()/OnUser2()...中进行实际的操作.
CXXXThread中的MFC代码会自动替你实现消息循环的.你所要做的只是响应消息罢了.

当你需要创建线程时,用m_pThread=AfxBeginThread(RUNTIME_CLASS(CXXXThread));
在你的CXXXView类中保留你已实例化的线程类指针m_pThread(如为多个线程,也可能是一个数组).
在你的CXXXView类中响应菜单命令如OnOperate1,OnOperate2...
在这些处理函数中分别用m_pThread->PostThreadMessage(WM_USERx,0,0);向你的
线程类发消息.
要杀掉线程时用m_pThread->PostThreadMessage(WM_QUIT,0,0);
netmare 2000-02-27
  • 打赏
  • 举报
回复
1.用PostThreadMessage,自己定义几个消息WM_USER+xxx,在你的thread function中做一个消息循环,主程序中选不同的菜单时,向thread发不同的消息,thread function响应消息做出不同的处理.
2.用临界区对象,程序中声明一个全局变量
CRITICAL_SECTION cs;
进程初始化时InitializeCriticalSection(&cs)
每个thread function的开始先做
try
{
//进入临界区,如果其它线程已进入临界区,挂起
EnterCriticalSection(&cs);
//进行线程功能的处理
...
}
final
{
//线程结束前必须释放临界区
LeaveCriticalSection(&cs);
}

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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