c++-莫名的线程控制变量bflag 被改变了,

问题描述

莫名的线程控制变量bflag 被改变了,

在线程内的某个对象的函数执行后,可函数内并没有改变布尔变量的代码
在线等,bflag 全局变量

解决方案

总结下,这个布尔变量我在一个TimeOut()里面有重新赋值, 没加锁(3楼),在现场函数里sleep()函数执行完时可能给这个函数发消息,会改变值,因为这个函数在其他文件里,查看的时候不够仔细,(如二楼),谢谢伸出援手的

解决方案二:

检查代码,肯定有地方改变了该值,否则不会有变化,仔细看看。

解决方案三:

没有使用线程同步机制。如信号量、锁等机制

解决方案四:

你这个问题的描述太简单了,能不能贴点代码来看看?

解决方案五:

代码不知道该怎么贴, 跟你细细描述下,bfalg是全局变量,是两个线程函数里的循环结束条件。 不知道什么线程函数里会改变这个变量,实际上函数里根本没把这变量置false的操作。 而且调试的时候,改变bflag的位置还不唯一

时间: 2025-01-19 10:20:20

c++-莫名的线程控制变量bflag 被改变了,的相关文章

编写线程安全的JSP应用程序

JSP默认是以多线程方式执行的,这是JSP与ASP,PHP,PERL等脚本语言不一样的地方,也是它的优势之一,但如果不注意多线程中的同步问题,会使所写的JSP程序有难以发现的错误.下面以一个例子说明JSP中的多线程问题及解决方法. 一.JSP的中存在的多线程问题: 当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求.如果有多个客户端同时请求该JSP文件,则服务端会创建多个线程.每个客户端请求对应一个线程.

编程技术:编写线程安全的JSP程序

js|安全|编程|程序 JSP默认是以多线程方式执行的,这是JSP与ASP,PHP,PERL等脚本语言不一样的地方,也是它的优势之一,但如果不注意多线程中的同步问题,会使所写的JSP程序有难以发现的错误.下面以一个例子说明JSP中的多线程问题及解决方法. 一.JSP的中存在的多线程问题: 当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求.如果有多个客户端同时请求该JSP文件,则服务端会创建多个线程.每个

编写线程安全的JSP

js|安全 JSP默认是以多线程方式执行的,这是JSP与ASP,PHP,PERL等脚本语言不一样的地方,也是它的优势之一,但如果不注意多线程中的同步问题,会使所写的JSP程序有难以发现的错误.下面以一个例子说明JSP中的多线程问题及解决方法. 一.JSP的中存在的多线程问题: 当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求.如果有多个客户端同时请求该JSP文件,则服务端会创建多个线程.每个客户端请求对

Java线程的深入探讨

一般来说,我们把正在计算机中执行的程序叫做"进程"(Process) ,而不将其 称为程序(Program).所谓"线程"(Thread),是"进程"中某个单一顺序的控制流. 新兴的操作系统,如Mac,Windows NT,Windows 95等,大多采用多线程的概念,把线 程视为基本执行单位.线程也是Java中的相当重要的组成部分之一. 甚至最简单的Applet也是由多个线程来完成的.在Java中,任何一个Applet的 paint()和upd

编写线程安全的JSP程序

js|安全|程序 JSP默认是以多线程方式执行的,这是JSP与ASP,PHP,PERL等脚本语言不一样的地方,也是它的优势之一,但如果不注意多线程中的同步问题,会使所写的JSP程序有难以发现的错误.下面以一个例子说明JSP中的多线程问题及解决方法. 一.JSP的中存在的多线程问题: 当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求.如果有多个客户端同时请求该JSP文件,则服务端会创建多个线程.每个客户端

驯服Tiger: 线程中的默认异常处理

虽然我们不想创建在无法预期时抛出运行时异常的程序,但这种情况还是会发生--尤其是第一次运行复杂程序时.通常是使用默认行为.打印堆栈溢出和结束线程的生命来处理这些异常. 从哪里发现默认行为?每个线程都属于一个由 java.lang.ThreadGroup 类表示的线程组.顾名思义,线程组允许您将线程组合在一起.您可能是为了方便而将线程组合,例如,一个线程池中的所有线程都属于组 X,而另一个池的所有线程则属于组 Y,或者是为了访问控制而将线程进行组合.组 X 中的线程无权访问或改变组 Y 中的线程,

《Java并发编程实战》学习笔记 线程安全、共享对象和组合对象

第一章 介绍 线程的优势: 充分利用多处理器 简化模型 简化异步事件的处理 提供用户界面的响应(时间) 线程的风险: 安全的风险(不好的事情会发生),提高错误出现的几率 活性的风险(好的事情不会发生),如某些代码不会执行,出现死锁.活锁以及饥饿 性能的风险,不好的多线程编程可能会危害性能 第二章 线程安全 编写线程安全的代码,实质是管理对状态的访问,尤其是那些共享.可变的状态.对象的状态包括任何能影响它外部可见行为的数据. 当有过个线程能访问状态变量时,而且他们当中能对变量进行修改,则需要对他们

Java线程面试题 Top 50

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员 的欢迎.大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发.调试.优化经验,所以线程相关的问题在面试中经常会 被提到. 在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问题像

线程管理(九)使用本地线程变量

校对:方腾飞 使用本地线程变量 并发应用的一个关键地方就是共享数据.这个对那些扩展Thread类或者实现Runnable接口的对象特别重要. 如果你创建一个类对象,实现Runnable接口,然后多个Thread对象使用同样的Runnable对象,全部的线程都共享同样的属性.这意味着,如果你在一个线程里改变一个属性,全部的线程都会受到这个改变的影响. 有时,你希望程序里的各个线程的属性不会被共享. Java 并发 API提供了一个很清楚的机制叫本地线程变量. 在这个指南中, 我们将开发一个程序,这