switch(type)
{
case 1:
执行线程1;
case 2:
执行线程2
case 3:
执行线程3
...
}
主线程5秒执行一次,但是线程1,2,3执行时间都超过5秒。我想要的效果是,如果type值为1的时候,主线程执行,线程1也正在执行,那么主线程就不干预线程1的运行;如果执行主线程的时候,type为2,线程1正在执行,那么主线程将中断线程1的运行并且执行线程2。请问这样应该如何做到?谢谢。
7 个解决方案
#1
CreateThread,TerminateThread
#2
创建时存好线程句柄,,如果要TerminateThread的话
建议少用为好,
可以考虑消息机制通知子线程终止---事件机制也可以啊
再简单点,共享全局变量 BOOL ,子线程检测到FALSE ,自动退出,,,
建议少用为好,
可以考虑消息机制通知子线程终止---事件机制也可以啊
再简单点,共享全局变量 BOOL ,子线程检测到FALSE ,自动退出,,,
#3
TerminateThread中断会造成内存泄漏的,程序需要6~12小时运行,不知道这样造成的内存泄漏是否在可接受范围内。我也查询过CSDN上相关的问题,但是对于TerminateThread的内存泄漏问题似乎都没有一个比较公认的答案。
我是在MFC下编程,不知道在子线程中消息机制如何使用?是发送WM_CLOSE消息吗?子线程又如何及时响应?我是新手,如果有时间的话麻烦给个范例,谢谢了。
全局变量考虑过,但是因为子线程中存在大量SLEEP语句,难道要每一次SLEEP的时候都检测一下是否退出?我觉得应该会有其他办法可以解决的吧,如果不行也只能这样了。
我是在MFC下编程,不知道在子线程中消息机制如何使用?是发送WM_CLOSE消息吗?子线程又如何及时响应?我是新手,如果有时间的话麻烦给个范例,谢谢了。
全局变量考虑过,但是因为子线程中存在大量SLEEP语句,难道要每一次SLEEP的时候都检测一下是否退出?我觉得应该会有其他办法可以解决的吧,如果不行也只能这样了。
#4
同意shawnwan的说法
#5
任何内存失去的方法都是不可以接受的。
另即使有消息给你,你也是要每次进行判断啊,要进行通讯就只能有所付出啦
另即使有消息给你,你也是要每次进行判断啊,要进行通讯就只能有所付出啦
#6
当运行线程2的时候将线程1挂起pThread1 ->SuspendThread;然后在运行线程2
如果不需要线程1再运行直接就pThread1 ->exithread(exitThread1ID);
如果不需要线程1再运行直接就pThread1 ->exithread(exitThread1ID);
#7
那也只能这样啦 谢谢大家 就结帖
#1
CreateThread,TerminateThread
#2
创建时存好线程句柄,,如果要TerminateThread的话
建议少用为好,
可以考虑消息机制通知子线程终止---事件机制也可以啊
再简单点,共享全局变量 BOOL ,子线程检测到FALSE ,自动退出,,,
建议少用为好,
可以考虑消息机制通知子线程终止---事件机制也可以啊
再简单点,共享全局变量 BOOL ,子线程检测到FALSE ,自动退出,,,
#3
TerminateThread中断会造成内存泄漏的,程序需要6~12小时运行,不知道这样造成的内存泄漏是否在可接受范围内。我也查询过CSDN上相关的问题,但是对于TerminateThread的内存泄漏问题似乎都没有一个比较公认的答案。
我是在MFC下编程,不知道在子线程中消息机制如何使用?是发送WM_CLOSE消息吗?子线程又如何及时响应?我是新手,如果有时间的话麻烦给个范例,谢谢了。
全局变量考虑过,但是因为子线程中存在大量SLEEP语句,难道要每一次SLEEP的时候都检测一下是否退出?我觉得应该会有其他办法可以解决的吧,如果不行也只能这样了。
我是在MFC下编程,不知道在子线程中消息机制如何使用?是发送WM_CLOSE消息吗?子线程又如何及时响应?我是新手,如果有时间的话麻烦给个范例,谢谢了。
全局变量考虑过,但是因为子线程中存在大量SLEEP语句,难道要每一次SLEEP的时候都检测一下是否退出?我觉得应该会有其他办法可以解决的吧,如果不行也只能这样了。
#4
同意shawnwan的说法
#5
任何内存失去的方法都是不可以接受的。
另即使有消息给你,你也是要每次进行判断啊,要进行通讯就只能有所付出啦
另即使有消息给你,你也是要每次进行判断啊,要进行通讯就只能有所付出啦
#6
当运行线程2的时候将线程1挂起pThread1 ->SuspendThread;然后在运行线程2
如果不需要线程1再运行直接就pThread1 ->exithread(exitThread1ID);
如果不需要线程1再运行直接就pThread1 ->exithread(exitThread1ID);
#7
那也只能这样啦 谢谢大家 就结帖