Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RabbitMq.net客户端中IModel线程的手动确认是否安全?_C#_.net_Rabbitmq_Thread Safety - Fatal编程技术网

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实例不应同时由多个线程使用”。