.net - SynchronizationContext.Post() 是线程安全的吗?

标签 .net multithreading synchronization locking

这是一个非常基本的问题,我想是的,但我找不到任何明确的答案。 SynchronizationContext.Post() 线程安全吗?

我有一个保存主线程上下文的成员变量,并且从多个线程调用_context.Post()。我想可以在对象上同时调用 Post() 。我应该做类似的事情

lock (_contextLock) _context.Post(myDelegate, myEventArgs);

还是没有必要?

编辑:
MSDN指出“任何实例成员都不能保证线程安全。”那么我应该保留我的 lock() 吗?

最佳答案

如果严格按照 MSDN 文档进行操作,那么 SynchronizationContext.Post 方法不是线程安全的。因此,除非文档中存在错误,否则您将需要同步对该方法的访问。我自己很难相信它不是线程安全的,但是你不能依赖假设,尤其是在处理线程同步问题时。在微软纠正文档或真正使其线程安全之前,确实没有办法解决这个问题。

关于.net - SynchronizationContext.Post() 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859835/

相关文章:

git - 如何更改“团队资源管理器”选项卡的 "Commit All"按钮

asp.net - 有没有办法使用 Web api 从一篇笔记中提取部分和笔记

c# - IIS 托管的 WCF 服务返回 HTTP 400 错误请求

.net - 设计模式下的XamlParseExceptions-使设计模式无用

c# - 将字典值列表连接到 IEnumerable

java - 音乐播放时中断线程

c - 与 Linux 相比,为什么 pthread_mutex 在 Mac OS X 上的性能如此糟糕?

JavaFX 从另一个线程更新 UI

c# - 鼠标.Synchronize()

linux - 是否有 "lock files"的标准 Linux 库?