请教一个线程问题,多谢!

rabbit729 2007-12-17 08:19:31
建立了一个基于对话框的MFC程序,上面有两个按钮Button1,Button2。在点击按钮Button1时通过CreateThread创建了线程A,
然后在线程A的线程函数中又通过CreateThread创建了线程B和线程C。现在的问题是我想通过点击按钮Button2暂停线程A和线程B的执行,请问这种该如何实现?
另外还有如下问题:
1. 这里的线程A,线程B和线程C之间是什么关系?
2. 线程之间存在父子关系么?
3. 在上面的例子中如果我把线程A挂起或结束掉那么线程B和线程C是不是也被挂起或结束?
4. 在上面的例子中我在主线程也就是UI线程中我能直接操作线程B和线程C么?
麻烦大家给说一下谢谢!!!
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiexie8682 2007-12-18
  • 打赏
  • 举报
回复
oldmanzhao 说的有道理 楼主可以参考一下
jameshooo 2007-12-18
  • 打赏
  • 举报
回复
访问共享数据时最好使用临界区,要发送通知时最好使用事件
Icanhelpyou 2007-12-18
  • 打赏
  • 举报
回复
同一个进程中的线程同步问题使用关键代码段就可以了,避免创建内核对象浪费时钟周期,
可以调用EnterCriticalSection和LeaveCriticalSection进行同步.
rabbit729 2007-12-17
  • 打赏
  • 举报
回复
谢谢各位的回答!
那我目前的问题是我开了一个缓存,线程B往其中放数据,线程C从其中取数据,也就是一个生产者/消费者问题,请问大家在这方面有什么经验和好的建议?主要是这两个线程的同步问题,谢谢!
jameshooo 2007-12-17
  • 打赏
  • 举报
回复
每个进程都有一个主线程,其它都是子线程,没有什么父子关系,也没有大的区别,唯一的区别就是:当主线程终止时,其它线程会被自动终止,进程结束。
要与其它线程通信,一般都是通过某些信号,比如事件、临界区等等,全局或静态变量也是共享的,注意线程同步就行了。
phalcon 2007-12-17
  • 打赏
  • 举报
回复
问题给三楼回答完了
oldmanzhao 2007-12-17
  • 打赏
  • 举报
回复

你在创建A线程的时候把它的句柄保存下来,在A里创建B的时候再把B保存下来(CreateThread的返回值),在响应Button2的时候以此二句柄为参数调用SuspendThread就可以把A和B暂停下来了。
1&2:线程ABC没有什么父子关系,三个独立的线程
3:把A挂掉不会引起B和C的终止,除非启动A的进程挂掉。
4:根据线程的句柄就可以。

KevinJHoo 2007-12-17
  • 打赏
  • 举报
回复
暂停直接调用API函数就行了啊。
1、创建后就各顾各的运行了。。。似乎没啥父子关系吧。这个我不确定,等高人解答。
3、不会。各是各的。
4、当然能了。
xaobao 2007-12-17
  • 打赏
  • 举报
回复
我也很想知道,帮顶了

15,471

社区成员

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

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