我对C++中的线程有一个问题。
我有两个线程在运行:一个运行客户端,另一个充当侦听器。侦听器线程调用shutdown()方法,该方法仅执行以下操作:
shutdown_=true;
std::cout<<shutdown_<<std::endl;shutdown_被设置为易失性的,并且侦听器线程是唯一调用shutdown()方法的线程,并且只有当另一个线程处于wait()模式(Poco synchronizedObject wait())时才能访问它。
由于某些原因,cout一直打印"0",最初(在使用xcode时)我收到一个警告,说shutdown_=true行什么都不做。经过几次编译后,此警告消失了。
我尝试使用互斥锁,在行前和行后锁定和解锁,但都没有效果。我最终完全删除了函数shutDown(),而不是使用它,而是将shutDown_更改为公共的,并直接从侦听器线程访问它,如下所示:
client_->shutdown_=true这很好用。我只是不知道问题是什么,以及如何在未来避免它。
谢谢,
发布于 2011-05-27 22:19:07
您提到您定义了shutdown_成员volatile。您是否隐藏了继承的基变量?
https://stackoverflow.com/questions/4542041
复制相似问题