首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从线程外部访问ThreadStatic变量

从线程外部访问ThreadStatic变量
EN

Stack Overflow用户
提问于 2014-06-06 15:26:15
回答 1查看 869关注 0票数 1

我已经将一个变量定义为ThreadStatic:

代码语言:javascript
复制
public static class MyApplicationContext {
    [ThreadStatic]
    public static bool Monitoring;
}

现在,我应该设置来自MainThread的变量监视(它已经启动了新线程):

代码语言:javascript
复制
this.syncThread = new Thread(this.InternalWork);
this.syncThread.SetApartmentState(ApartmentState.STA);
this.syncThread.Start();
// now, I should access MyApplicationContext.Monitoring of syncThread.

有办法这样做吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-06 15:40:11

我的理解是,ThreadStatic总是相对于线程。如果你指示线程阅读是给你的,你就可以得到这个信息。

您还可以将静态值设置为对象,然后让该线程将引用添加到要监视的中心位置。您仍然会遇到这样的问题:确保对该对象的更改定期同步或将其设置为易失性。

通过手动同步或将其设置为易失性,可以删除线程本地的许多优点。如果您的ThreadStatic对象是一个可能发生变化的数据结构,您也需要小心。试图读取更改的数据结构的主线程可能引发异常,甚至返回错误的数据。

我没有使用ThreadStatic的经验,所以我只想从我的知识出发。

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

https://stackoverflow.com/questions/24085470

复制
相关文章

相似问题

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