C# RabbitMq.net客户端中IModel线程的手动确认是否安全?
如C# RabbitMq.net客户端中IModel线程的手动确认是否安全?,c#,.net,rabbitmq,thread-safety,C#,.net,Rabbitmq,Thread Safety,如IModel实例上的操作中所述,实例不是线程安全的 根据经验,IModel实例的使用人数不应超过 同时使用一个线程:应用程序代码应保持清晰的 IModel实例的线程所有权概念。如果不止一个 线程需要访问应用程序的特定IModel实例 应该强制实行相互排斥。实现这一目标的一个方法是 允许IModel的所有用户锁定实例本身 然后,代码示例显示为在发布时强制执行互斥的一种方法 IModel ch = RetrieveSomeSharedIModelInstance(); lock (ch) {
IModel
实例上的操作中所述,实例不是线程安全的
根据经验,IModel
实例的使用人数不应超过
同时使用一个线程:应用程序代码应保持清晰的
IModel
实例的线程所有权概念。如果不止一个
线程需要访问应用程序的特定IModel
实例
应该强制实行相互排斥。实现这一目标的一个方法是
允许IModel
的所有用户锁定实例本身
然后,代码示例显示为在发布时强制执行互斥的一种方法
IModel ch = RetrieveSomeSharedIModelInstance();
lock (ch) {
ch.BasicPublish(...);
}
到目前为止,一切顺利。然后解释了IModel
操作不正确序列化的一些症状。然而,他们指出,症状并不局限于那些手术。这句话的这一部分确实在我们的脑海中产生了一些问题。手动确认线程是否安全?在确认EventingBasicConsumer
接收的事件处理程序之前,我们是否必须使用一些锁
关于这一点,有一些问题需要澄清,但他们没有找到答案,建议OP在SO中提问,我找不到答案。只有在您确认后才安全。如果可能的话,我会避免完全共享频道。只有在您确认后才安全。如果可能的话,我会避免完全共享频道。请您添加该文章中的确切短语,好吗?它清楚地说明:“根据经验,IModel实例不应被多个线程同时使用”。您可以添加该文章中的确切短语吗?它清楚地说明:“根据经验,IModel实例不应同时由多个线程使用”。