我有两个线程:一个前台,一个后台,前台负责修改文本,后台线程负责检查文本,
我想做的是:
1.前台比后台有较高的优先权.
2.只有前台处于挂起时,后台才可以运行,且立即运行
3.只要前台一运行,后台就必须挂起,而且要从新检查文本,因为前台会修改文本我想不出任何办法能同步这两个线程.不知您有好办法吗?
我想做的是:
1.前台比后台有较高的优先权.
2.只有前台处于挂起时,后台才可以运行,且立即运行
3.只要前台一运行,后台就必须挂起,而且要从新检查文本,因为前台会修改文本我想不出任何办法能同步这两个线程.不知您有好办法吗?
解决方案 »
- 程序越编越大,修改时只是面对一大堆代码翻来翻去很不方便,到底写软件走怎样的路子才对,修改才容易?是从需求分析-概要设计-详细设计-...这样走下去呢,还是随便一点好呢。哪有一个开发模式可供参考参考,从分析到设计再到实现、测试等。怎样才能理清开发思路,修
- CString 问题!
- 获取硬盘的厂商号?
- 何为Windows操作系统的底层驱动程序开发?
- vc.net开发word程序???????????
- 通过ADO循环(多次)调用存储过程的问题
- 关于CString的简单问题
- 300分,等着你!CRecordSet的问题!
- ado:从获得的记录集中怎么得到int,CString,CTime等类型的数据,谢谢!
- 怎样改变 CRichEditView 窗口的背景色?
- 在窗口内按回车键,可以将窗口关闭,如何避免这种情况
- win2000更改环境设置里的系统变量需要重新启动么?
比如用Enent:
backThread()
{
while(1){
waitforsingleobject(hEvent...);//block
while(1){ //loop 2
check text...
}
ResetEvent(hEvent);
}
}
forThread()
{
ResetEvent(hEvent);
modify text...
SetEvent(hEvent);
}
问题是forThread()运行后,ResetEvent(),backThread()如果正在check text 循环中,则无法马上退出循环不知道该如何?
{
ResetEvent(hEvent);
modify text...//some idle time
SetEvent(hEvent);
}
给你一点参考,可能还有更多方法(记得告诉我哦)。主要用的是event(使用CreateEvent和WaitForSingleObject等方法辅助)、msg(使用PostThreadMessage 和GetMessage等方法辅助),当然除了这两种方法以外还有mutex、Semaphore,dde、共享内存、系统环境量、本地tcp通讯,管道、邮槽、甚至文件、数据库等都可以进行线程或进程同步、通信。最后差点忘了,还有CriticalSection(是今天回答其它问题想到的)
这样吧,无论各位用什么办法,event也好,mutex也好,semaphore也好,只要能给出一个简单例子,能达到我的要求,就是高手高高手
前2条好做,关键是第3条怎么做
后台消息唤醒时,他从被挂起的那一点开始运行,此时他可能正在检查文本也可能在修改某个数据,问题是他在何时检查这个标记,他如何得知自己刚刚被唤醒并且应该检查那个标志?