首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setters和线程

setters和线程
EN

Stack Overflow用户
提问于 2010-12-28 05:42:39
回答 1查看 505关注 0票数 2

我对C++中的线程有一个问题。

我有两个线程在运行:一个运行客户端,另一个充当侦听器。侦听器线程调用shutdown()方法,该方法仅执行以下操作:

代码语言:javascript
复制
shutdown_=true;
std::cout<<shutdown_<<std::endl;

shutdown_被设置为易失性的,并且侦听器线程是唯一调用shutdown()方法的线程,并且只有当另一个线程处于wait()模式(Poco synchronizedObject wait())时才能访问它。

由于某些原因,cout一直打印"0",最初(在使用xcode时)我收到一个警告,说shutdown_=true行什么都不做。经过几次编译后,此警告消失了。

我尝试使用互斥锁,在行前和行后锁定和解锁,但都没有效果。我最终完全删除了函数shutDown(),而不是使用它,而是将shutDown_更改为公共的,并直接从侦听器线程访问它,如下所示:

代码语言:javascript
复制
client_->shutdown_=true

这很好用。我只是不知道问题是什么,以及如何在未来避免它。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2011-05-27 22:19:07

您提到您定义了shutdown_成员volatile。您是否隐藏了继承的基变量?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4542041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档