这是一个非常基本的问题,我想是的,但我找不到任何明确的答案。 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/